任何应用程序中的弹出窗口

时间:2010-12-03 10:18:20

标签: android android-widget

我希望在我的代码的任何应用中的特定时间弹出对话框:

 public class testPOPDialog extends Activity {
/** Called when the activity is first created. */
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    mHandler.postDelayed(mUpdateTimeTask, 1000);



}
private Runnable mUpdateTimeTask = new Runnable() {
       public void run() {
           AlertDialog d = new AlertDialog.Builder(testPOPDialog.this)
            .setTitle("tanchulai")
            .setMessage("bucuo de tanchulai")

            .create();

        d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        d.show();     
       }
    };

}

它给了我

12-03 10:12:18.162: ERROR/AndroidRuntime(571): android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRoot$W@43dd71c0 -- permission denied for this window type

这是什么权限 如果我删除d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);我的应用是正确的.....

3 个答案:

答案 0 :(得分:14)

将此权限添加到您的清单:

android.permission.SYSTEM_ALERT_WINDOW

答案 1 :(得分:1)

首先感谢Mathias Lin

我是Android新手,所以我很难从Mathias Lin的答案中设置权限。 因为我不知道如何设置权限以及清单文件中的位置。

最后,我借助Mathias Lin的答案做到了。所以我详细说明了答案。


在mainfest文件中使用

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

之后

<uses-sdk
    android:minSdkVersion=...
    android:targetSdkVersion=... />

作为

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

答案 2 :(得分:0)

在包含要显示为弹出窗口的活动的清单文件中尝试此操作.--&gt;&gt;机器人:主题= “@机器人:风格/ Theme.Dialog”