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

yyhrrdl8  于 2023-01-03  发布在  Android
关注(0)|答案(3)|浏览(178)

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

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);我的应用程序是正确的,这个权限是什么...

g6ll5ycj

g6ll5ycj1#

将此权限添加到清单:

android.permission.SYSTEM_ALERT_WINDOW
piztneat

piztneat2#

首先要感谢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"/>
vulvrdjw

vulvrdjw3#

在您的清单文件中尝试使用您想要显示为弹出窗口的Activity。--〉〉

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

相关问题