Android 如何要求在整个应用程序中启用蓝牙

Android 如何要求在整个应用程序中启用蓝牙,android,bluetooth,Android,Bluetooth,我试图要求在整个应用程序中启用蓝牙,但我如何才能做到这一点 当我只使用主活动时,代码工作得很好。但是,当我转到另一个活动,然后禁用BT广播时,向我发送信号以启用BT,但在此之后,再也不会调用“onActivityResult”方法 我怎样才能写一个需要BT的全球报告?适用于我的应用程序中的所有活动(和首选项) @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {

我试图要求在整个应用程序中启用蓝牙,但我如何才能做到这一点

当我只使用主活动时,代码工作得很好。但是,当我转到另一个活动,然后禁用BT广播时,向我发送信号以启用BT,但在此之后,再也不会调用“onActivityResult”方法

我怎样才能写一个需要BT的全球报告?适用于我的应用程序中的所有活动(和首选项)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    switch (requestCode)
    {
        case Bluetooth.REQUEST_ENABLE_BLUETOOTH:
            if (resultCode == RESULT_OK)
            {
                // some stuff here
            }
            else
            {
                // exitapp();
            }
            break;
    }
}
接受者

protected final BroadcastReceiver mReceiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED))
            {
                final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                        BluetoothAdapter.ERROR);

                if(state == BluetoothAdapter.STATE_OFF)
                {
                    startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), Bluetooth.REQUEST_ENABLE_BLUETOOTH);
                }
            }
        }
    };
private BroadcastReceiver mServiceUpdatesReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent)
    {
        int state = intent.getIntExtra("state", -1);

        if(state == BluetoothAdapter.STATE_OFF)
        {
            // enable request
        }
    }
};
当然

startReceiver(mReceiver); // onCreate()
stopReceiver(mReceiver); // onDestroy()
非常感谢

更新:在我转到另一个活动后,接收器不再工作(是的,可能在onDestroy()中停止)?我真的不知道,也许我需要让接受者参加所有的活动?哦,上帝,我希望这不是真的

    import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;

public class BluetoothService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
        this.registerReceiver(bluetoothReceiver, intentFilter);
    }

    @Override
    public void onDestroy() {
        if (bluetoothReceiver != null) {
            this.unregisterReceiver(bluetoothReceiver);
        }
        super.onDestroy();
    }

    public BroadcastReceiver bluetoothReceiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED))
            {
                final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
                Intent x = new Intent("btfilter");
                intent.putExtra("state", state);
                sendBroadcast(x);
            }
        }
    };
}
创建时的主要活动

    btintent= new Intent(this, BluetoothService.class);
        startService(btintent);
registerReceiver(mServiceUpdatesReceiver, new IntentFilter("btfilter"));
主活动onDestroy()

接受者

protected final BroadcastReceiver mReceiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED))
            {
                final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                        BluetoothAdapter.ERROR);

                if(state == BluetoothAdapter.STATE_OFF)
                {
                    startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), Bluetooth.REQUEST_ENABLE_BLUETOOTH);
                }
            }
        }
    };
private BroadcastReceiver mServiceUpdatesReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent)
    {
        int state = intent.getIntExtra("state", -1);

        if(state == BluetoothAdapter.STATE_OFF)
        {
            // enable request
        }
    }
};

你应该考虑使用A。即使应用程序关闭,它也可以工作。如果你对它一无所知,快速描述:它是一个没有用户界面的上下文。

你应该考虑使用。即使应用程序关闭,它也可以工作。如果您对此一无所知,请快速描述:这是一个没有用户界面的上下文。

谢谢,我更新了我的问题。。。我可能做错了什么,你能看看吗?这就像以前的版本一样,哈哈,没有区别。只有一个区别当然,bt不是在其他活动中要求的。谢谢,我更新了我的问题。。。我可能做错了什么,你能看看吗?这就像以前的版本一样,哈哈,没有区别。只有一个区别。当然,在其他活动中不需要bt。