从服务中显示Alertbox

时间:2014-12-04 07:16:27

标签: android

有没有办法在服务中使用警报框而不是为其创建另一个活动,然后从服务中启动该活动?

2 个答案:

答案 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

但如果你的要求是显示对话框,我不会让你失望。你有以下选择:

  1. 如果您有MainActivity使用LocalBroadcastReceiver向您的活动发送广播,并让您的MainActivity显示对话框。 (仅当您的活动可见时才可以这样做)
  2. 另一个选项是在清单中定义对话主题活动(看一看here)并从服务开始该活动。
  3. 另一种选择可能是,在Manifest中定义一个Activitiy,其唯一目的是显示一个Dialog并从服务开始该活动
  4. 修改

    我有一个建议,如果您希望向用户提供信息,请使用Notification。您无法通过服务显示对话框的主要原因是Google希望将信息正确地呈现给其用户,而不是在假设他们处于通话中间或键入消息等时让他们感到惊讶。

    如果用户感兴趣,那么他将触摸通知并开始您自己的活动,可能会恢复您的活动,创建一个新活动,然后使用请求执行操作的对话框,或者您想要执行的任何操作。

    替代解决方案

    但是,如果你坚持,我有another solution,如果你喜欢黑客,(但我不喜欢黑客的好应用)。