2012-06-28 2 views
0

Служба, которую я написал, чтобы отключить Bluetooth, когда когда-либо он включается, приводит к сбоям.Андроид Bluetooth сервисная программа i написал аварии

///////////////////////////////// сервис ////////// //////////////////////

public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 

      Intent startServiceIntent = new Intent(context, Bluetoothservice.class); 
      context.startService(startServiceIntent); 

      if(intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)){ 
       BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); 
       if (bluetooth.getState() == BluetoothAdapter.STATE_ON 
         || bluetooth.getState() == BluetoothAdapter.STATE_TURNING_ON) { 
       bluetooth.disable(); 
       } 
       return; 
      } 

///////////////////// //////////// Приемник /////////////////////////////////

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     // TODO Auto-generated method stub 
     IntentFilter filterb = new IntentFilter(
       BluetoothAdapter.ACTION_STATE_CHANGED); 
     BroadcastReceiver mreceiverb = new Broadcastreceiver(); 
     registerReceiver(mreceiverb, filterb); 
     return super.onStartCommand(intent, flags, startId); 

    } 

///////////////////////////////// Logcat ///////// ////////////////////////

E/AndroidRuntime(8759): FATAL EXCEPTION: main 
    E/AndroidRuntime(8759): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetooth.adapter.action.STATE_CHANGED flg=0x10000010 (has extras) } in [email protected] 
    E/AndroidRuntime(8759): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:734) 
    E/AndroidRuntime(8759): at android.os.Handler.handleCallback(Handler.java:587) 
    E/AndroidRuntime(8759): at android.os.Handler.dispatchMessage(Handler.java:92) 
    E/AndroidRuntime(8759): at android.os.Looper.loop(Looper.java:132) 
    E/AndroidRuntime(8759): at android.app.ActivityThread.main(ActivityThread.java:4126) 
    E/AndroidRuntime(8759): at java.lang.reflect.Method.invokeNative(Native Method) 
    E/AndroidRuntime(8759): at java.lang.reflect.Method.invoke(Method.java:491) 
    E/AndroidRuntime(8759): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 
    E/AndroidRuntime(8759): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
    E/AndroidRuntime(8759): at dalvik.system.NativeStart.main(Native Method) 
    E/AndroidRuntime(8759): Caused by: java.lang.SecurityException: Calling uid 10099 gave packageandroid which is owned by uid 1000 
    E/AndroidRuntime(8759): at android.os.Parcel.readException(Parcel.java:1321) 
    E/AndroidRuntime(8759): at android.os.Parcel.readException(Parcel.java:1275) 
    E/AndroidRuntime(8759): at android.bluetooth.IBluetooth$Stub$Proxy.disable(IBluetooth.java:806) 
    E/AndroidRuntime(8759): at android.bluetooth.BluetoothAdapter.disable(BluetoothAdapter.java:496) 
    E/AndroidRuntime(8759): at com.teststopper.StatusReceiver.onReceive(StatusReceiver.java:17) 
    E/AndroidRuntime(8759): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:725) 
    E/AndroidRuntime(8759): ... 9 more 

Может ли кто-нибудь помочь?

+0

убедитесь, что у вас есть разрешений –

+0

разрешений устанавливаются – Loshi

ответ

0

Вы должны указать каждую функцию в отдельном элементе <uses-feature>, поэтому, если вашему приложению требуется несколько функций, оно объявит несколько элементов <uses-feature>.

Например, приложение, которое требует как Bluetooth и функции камеры в устройстве будет объявить эти два элемента:

<uses-feature android:name="android.hardware.bluetooth" /> 
<uses-feature android:name="android.hardware.camera" /> 

также проверить, как вы добавили

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

BLUETOOTH Allows applications to connect to paired bluetooth devices 
BLUETOOTH_ADMIN Allows applications to discover and pair bluetooth devices 

Special handling for Bluetooth feature

+0

' ' да, эти два являются будучи настроенным – Loshi

0

As Я сказал в ответе на ваш other question, вы не должны отключать адаптер Bluetooth без явного согласия пользователя.

+0

Но без взаимодействия с пользователем мы можем включить bluetooth, если его отключить ....... – Loshi

+0

Несмотря на это, вы не должны ожидать, что это будет работать, поскольку в документации явно указано, что вы не должны делать то, что вы пытаетесь сделать , –

+0

Хмммм должен объяснить мой босс об этом ........ :( – Loshi

Смежные вопросы