意图服务中的Android Alert对话框

时间:2014-03-25 06:44:06

标签: android android-intent android-alertdialog intentservice

我想在意图服务中显示警告对话框。

   AlertDialog alertDialog = new AlertDialog.Builder(this).create();

这会引发以下异常

   Unable to add window — token null is not for an application

我也尝试过IntentService.this和getApplicationContext()。之间我不想使用活动。我只是想用一个小文本显示一个简单的警告对话框。

4 个答案:

答案 0 :(得分:22)

显示Activity需要AlertDialog,因为我们无法显示Dialog

中的Service

<强>解。

创建Activity作为对话主题,并从Activity开始Service

只需在Activity注册menifest.xml,如下所示

android:theme="@android:style/Theme.Dialog"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

<强> MyDialog.java

public class MyDialog extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("your title");
        alertDialog.setMessage("your message");
        alertDialog.setIcon(R.drawable.icon);

        alertDialog.show();
    }
}

答案 1 :(得分:11)

仅当您将alertDialog类型设置为TYPE_SYSTEM_ALERT时,它才会从意向服务中显示。

 AlertDialog alertDialog = new AlertDialog.Builder(this).create();

在您的代码之后添加以下内容:

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();

但是,它有一个成本:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

答案 2 :(得分:0)

请访问

https://github.com/selmantayyar/Custom-SMS-Popup

它会帮助你!!

或者您可以做的是在menifest.xml中注册anActivity,如下所示

android:theme="@android:style/Theme.Dialog"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

并解决它

答案 3 :(得分:-2)

问题在于上下文。您不能在意图服务中使用作为上下文。因此需要将Intent Service的Context变量传递给Alert Dialog。像,

AlertDialog alertDialog = new AlertDialog.Builder(context).create();