当要求打开蓝牙时,程序不会停止

时间:2013-04-21 13:54:19

标签: android bluetooth dialog

我尝试使用对话框BluetoothAdapter.ACTION_REQUEST_ENABLE向用户询问 打开蓝牙,但是当我使用它时,程序没有等待对话结束。
我必须知道用户是否允许打开蓝牙,以便我可以返回之前的活动,如果他不允许它。即使使用onActivityResult获得结果也无效。

如何获取对话框的结果以及如何让程序等待对话框的结果?

我试图使用的对话:

private int REQUEST_ENABLE_BT = 100;  
...  
Intent btEnable = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);  
startActivityForResult(btEnable, REQUEST_ENABLE_BT);

之后它就会继续而不等待结果。

2 个答案:

答案 0 :(得分:0)

  

但是当我使用它时,程序没有等待对话结束

不应该这样。 startActivity()startActivityForResult()是异步的。

  

我没有打电话给onActivityResult。

您不会致电onActivityResult()。您实施onActivityResult()。当用户完成您通过startActivityForResult()启动的活动时,将调用它。 the documentation中介绍了这一点。

  

public void onActivitResult(int RequestCode,int ResultCode,Intent Data){super.onActivityResult(RequestCode,ResultCode,Data); if(RequestCode == REQUEST_ENABLE_BT)....}这不叫

那是因为你拼错了方法名。它是onActivityResult(),而不是onActivitResult()。使用@Override注释来帮助检测这些问题。

  

如何获得对话框的结果

onActivityResult()中,查看蓝牙是否已启用。

  

如何让程序等待对话框的结果?

你没有。 Android是事件驱动的;您通过onActivityResult()处理活动。

答案 1 :(得分:0)

现在代码中的正确答案....

//Global  
REQUEST_CODE_1 = 0;  
REQUEST_CODE_2 = 1;

onCreate(Bundle savedInstanceState)  
{  
    super.onCreate(savedInstanceState);  
    Intent dialog = new Intent(myclass.this, dialog1.class);  
    startActivityForResult(dialog, REQUEST_CODE_1);  
}  

onActivityResult(int requestCode, int resultCode, Intent data)  
{  
if(requestCode == REQUEST_CODE_1)  
{
   if(resultCode == RESULT_OK)  
   {  
       Intent nextDialog = new Intent(myclass.this, nextDialog.class);  
       startActivityForResult(nextDialog, REQUEST_CODE_2);  
   }  
}

if(requestCode == REQUEST_CODE_2)  
{...}  
}