我写的android蓝牙服务程序崩溃了

我写的android蓝牙服务程序崩溃了,android,service,bluetooth,Android,Service,Bluetooth,我写的当蓝牙被启用时禁用它的服务崩溃了 ///////////////////////////////// 服务 //////////////////////////////// public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Intent startServiceIntent = new Intent(cont

我写的当蓝牙被启用时禁用它的服务崩溃了

///////////////////////////////// 服务 ////////////////////////////////

 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);

    }
///////////////////////////////// 接受者 /////////////////////////////////

 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

有人能帮忙吗?

您必须在单独的
元素中指定每个功能,因此如果您的应用程序需要多个功能,它将声明多个
元素

例如,在设备中同时需要蓝牙和摄像头功能的应用程序将声明以下两个元素:

<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_ADMIN允许应用程序发现和配对BLUETOOTH设备

正如我在对您的问题的回答中所述,未经明确的用户同意,您不应禁用蓝牙适配器。

确保您有权限''是的,这两个适配器正在设置,即使如此,您不应该期望这样做,因为文档明确指出您不应该做您试图做的事情。@Loshi听起来不错。您可以选择创建一个定制的Android版本,让您完全控制操作系统(这将相当困难),或者使用企业管理工具(即MDM)。anw,thnx mate。。。。。希望你能帮我解决这个问题。。。。