0

Bluetooth が有効になるたびに無効にするように書いたサービスがクラッシュします。

///////////////////////////////// サービス //////////////// ////////////////

 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 com.teststopper.StatusReceiver@407290f8
    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

誰でも助けることができますか?

4

2 に答える 2

0

各機能を個別の要素で指定する必要があるため、アプリケーションが複数の機能を必要とする場合は、複数の要素<uses-feature>を宣言します。<uses-feature>

たとえば、デバイスで Bluetooth とカメラの両方の機能を必要とするアプリケーションは、次の 2 つの要素を宣言します。

<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

Bluetooth 機能の特別な処理

于 2012-06-28T08:34:22.160 に答える
0

他の質問への回答で述べたように、明示的なユーザーの同意なしに Bluetooth アダプターを無効にしないでください。

于 2012-06-28T19:25:55.757 に答える