有没有办法在服务中使用警报框而不是为其创建另一个活动,然后从服务中启动该活动?
答案 0 :(得分:0)
创建自定义广播接收器
public class MyBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// AlertDialogue will be here
}
}
在清单文件中注册
<receiver android:name="MyBroadcastReceiver">
<intent-filter>
<action android:name="com.sample.A_CUSTOM_INTENT">
</action>
</intent-filter>
</receiver>
从服务触发BroadcastReceiver
Intent intent = new Intent("MyCustomIntent");
EditText et = (EditText)findViewById(R.id.extraIntent);
// add data to the Intent
intent.putExtra("message", (CharSequence)et.getText().toString());
intent.setAction("com.sample.A_CUSTOM_INTENT");
sendBroadcast(intent);
答案 1 :(得分:0)
服务无法显示Dialog
,只有您可以显示短暂的Toast
。
但如果你的要求是显示对话框,我不会让你失望。你有以下选择:
MainActivity
使用LocalBroadcastReceiver
向您的活动发送广播,并让您的MainActivity显示对话框。 (仅当您的活动可见时才可以这样做)修改强>
我有一个建议,如果您希望向用户提供信息,请使用Notification。您无法通过服务显示对话框的主要原因是Google希望将信息正确地呈现给其用户,而不是在假设他们处于通话中间或键入消息等时让他们感到惊讶。
如果用户感兴趣,那么他将触摸通知并开始您自己的活动,可能会恢复您的活动,创建一个新活动,然后使用请求执行操作的对话框,或者您想要执行的任何操作。
替代解决方案
但是,如果你坚持,我有another solution,如果你喜欢黑客,(但我不喜欢黑客的好应用)。