gpt4 book ai didi

java - 如何获得服务以将焦点转移到您的后台 Activity ?

转载 作者:行者123 更新时间:2023-11-30 03:08:54 25 4
gpt4 key购买 nike

不好意思问这个。

我有一个服务 BroadcastReceiver.onReceive(),它在蓝牙设备连接时监听它们,并显示一个对话框以提示用户接受我的应用是否应该使用该设备。

当然,问题是当您连接蓝牙设备时,您通常位于“设置”菜单中,而不是在我的应用程序中。我的服务将看到 BluetoothDevice.ACTION_ACL_CONNECTED Intent 并尝试显示自然没有 Activity 窗口的 AlertDialog:

02-23 13:22:19.099: E/AndroidRuntime(25884): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
02-23 13:22:19.099: E/AndroidRuntime(25884): at android.view.ViewRootImpl.setView(ViewRootImpl.java:563)
02-23 13:22:19.099: E/AndroidRuntime(25884): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:269)
02-23 13:22:19.099: E/AndroidRuntime(25884): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
02-23 13:22:19.099: E/AndroidRuntime(25884): at android.app.Dialog.show(Dialog.java:281)
02-23 13:22:19.099: E/AndroidRuntime(25884): at android.app.AlertDialog$Builder.show(AlertDialog.java:951)

我的 onRecevie 只是为了它的 hell :(我剪辑并编辑了它,可能有一个 mmissing '}' )

    @Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)) {
final BluetoothDevice btdevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (btdevice != null) {
serviceHandler.post(new Runnable() {
public void run() {
new AlertDialog.Builder(getApplicationContext())
.setTitle("Bluetooth PAN detected")
.setMessage(
"Do you want to connect to this device?\n" +
"Name: " + btdevice.getName() + "\n" +
"MAC: " + btdevice.getAddress())
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}}
).setNegativeButton("No", null).show();
}
});
}
}
}

有人对服务如何将焦点强制到 Activity 以便绘制对话框有任何建议吗?或者在 Android for Services 中是否有另一种方法来提示或强制用户输入? (我能想到为什么需要这样做的十几个原因)

谢谢!

最佳答案

您可以简单地通过您的Service向用户显示一个Notification,当用户选择该Notification时,您可以简单地启动您的Activity让用户执行与BlueTooth 连接相关的任务。

这是一个很好的实现 Notifications 的教程:
http://www.vogella.com/tutorials/AndroidNotifications/article.html

希望对您有所帮助。

关于java - 如何获得服务以将焦点转移到您的后台 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com