Вопрос по bluetooth, galaxy-tab, android, service – Сервисное приложение Android 2.3.3 работает четко, но на вкладке 3.2 galaxy оно работает, но закрывается принудительно

0

У меня есть следующий сервис, работающий на Android Sonny Erricson Xperia Ray 2.3, который работает отлично. Он предназначен для автоматического отключения Bluetooth и Wi-Fi, когда пользователь пытается включить.

это работает на загрузке.

Но когда я бегу на Galaxy Tab 10.2 Android 3.2, он работает для Wi-Fi, но на Bluetooth он закрывается принудительно.

Сервис заключается в следующем

IntentFilter filterb = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
BroadcastReceiver mReceiverb = new StatusReceiver();
registerReceiver(mReceiverb, filterb);

Трансляция выглядит следующим образом

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.disable();
}

разрешение дается следующим образом

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

только что получил logcat

E/AndroidRuntime( 9217): FATAL EXCEPTION: main
E/AndroidRuntime( 9217): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetooth.adapter.action.STATE_CHANGED flg=0x10000010 (has extras) } in [email protected]
E/AndroidRuntime( 9217):    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:734)
E/AndroidRuntime( 9217):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 9217):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 9217):    at android.os.Looper.loop(Looper.java:132)
E/AndroidRuntime( 9217):    at android.app.ActivityThread.main(ActivityThread.java:4126)
E/AndroidRuntime( 9217):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 9217):    at java.lang.reflect.Method.invoke(Method.java:491)
E/AndroidRuntime( 9217):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
E/AndroidRuntime( 9217):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
E/AndroidRuntime( 9217):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 9217): Caused by: java.lang.SecurityException: Calling uid 10097 gave packageandroid which is owned by uid 1000
E/AndroidRuntime( 9217):    at android.os.Parcel.readException(Parcel.java:1321)
E/AndroidRuntime( 9217):    at android.os.Parcel.readException(Parcel.java:1275)
E/AndroidRuntime( 9217):    at android.bluetooth.IBluetooth$Stub$Proxy.disable(IBluetooth.java:806)
E/AndroidRuntime( 9217):    at android.bluetooth.BluetoothAdapter.disable(BluetoothAdapter.java:496)
E/AndroidRuntime( 9217):    at google.android.disable.StatusReceiver.onReceive(StatusReceiver.java:26)
E/AndroidRuntime( 9217):    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:725)
E/AndroidRuntime( 9217):    ... 9 more
Нет, нет строгого режима. Я создал тот же проект с использованием 3.2 SDK. Loshi
Попробуйте изменить имя пакета! Vipul Shah
Можете ли вы добавить LogCat силы закрыть? было бы более полезно, если бы мы знали точную ошибку, которая происходит во время закрытия силы. Kevin Qiu
Тем не менее это не работает, есть ли конкретный метод Bluetooth для вызова, когда дело доходит до 3,2? или методы, которые я написал, неверны? Loshi
Если вы применяете StrictMode (если есть). Попробуйте изменить имя пакета Vipul Shah

Ваш Ответ

1   ответ
0

что вы не должны вызывать BluetoothAdapter.disable () без явного действия пользователя. Это означает, что вы не должны вызывать этот метод автоматически при загрузке устройства. Это может быть причиной вашей ошибки.

Ссылка: http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#disable()

Но почему он отлично работает на Сониерриксоне, а не на Галактике? и это только по Bluetooth. даже не по Wi-Fi Loshi
: / оооо, должно быть что-то, что сработает, верно? Loshi
Нет, это приложение безопасности, используемое для корпоративных заданных вкладок, и все настройки приложений будут снова заблокированы с помощью блокировщика приложений. Loshi
Я думаю, что единственный способ заставить это работать, - это сначала попросить пользователя. Уведомление, открывающее действие, может работать. Если вы дадите мне полную картину того, чего вы пытаетесь достичь (это приложение для экономии энергии? Возможно, вы пытаетесь заблокировать устройства в маркетинговых целях?), То, возможно, я могу предложить лучшую альтернативу.
Я предполагаю, что базовый код платформы изменился вокруг Android 3, чтобы ввести ограничения. Wi-Fi просто не имеет этого ограничения. Однако остается факт, что в документации прямо указано, что вы не должны делать то, что пытаетесь сделать, поэтому вы не должны ожидать, что это сработает.

Похожие вопросы