从一个apk调用另一个apk中的调起Dialog的功能时候遇到的问题,小笔记!
来源:互联网 发布:心理咨询知乎 编辑:程序博客网 时间:2024/06/13 03:10
在类似服务中(非Activity),另一个apk以aidl进程与这个服务通讯,连接这个服务,然后所有的实现都要写在服务中,另一个apk只需要获取aidl句柄之后再进行调用对应的方法即可。然后这个apk点击一个按钮调起这个服务中的一个Dialog,二Dialog必须得衣服一个Activity(View)才能弹出,否则就会报错,log如下:
android.view.WindowManager$BadTokenException: Unable to add window – token null is not for an application
AndroidRuntime: at android.view.ViewRootImpl.setView(ViewRootImpl.java:689)
AndroidRuntime: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:319)
AndroidRuntime: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
AndroidRuntime: at android.app.Dialog.show(Dialog.java:325)
那怎么解决呢?方法如下:
因为我的服务中本身有handler,这个handler是在new Thread里创建的,所以他的上下都要Looper.prepare和Looper.loop,然后在代码中哪里需要调起Dialog,那就发送一个handler,然后在handler中写弹出Dialog的代码,重点是!!!!!!!!这个Dialog必须是自定义的,必须是自定义的!!!!代码如下:
case SHOW_ALERT_DIALOG: //弹框 dialog = new MyAlertDialog(mContext,R.style.alert_dialog); Window window = dialog.getWindow(); dialog.setCanceledOnTouchOutside(true); //让这个Dialog在任何页面上都能弹出,即让他变成系统级的Dialog window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); window.setGravity(Gravity.CENTER); dialog.show(); break;
另一种情况:如果我的代码中没有handler的话,那就代码如下:
new Thread(){ public void run(){ Looper.prepare();//必须得有 dialog = new MyAlertDialog(mContext,R.style.alert_dialog); Window window = dialog.getWindow(); dialog.setCanceledOnTouchOutside(true); //让这个Dialog在任何页面上都能弹出,即让他变成系统级的Dialog window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); window.setGravity(Gravity.CENTER); dialog.show(); Looper.loop();//必须得有 } }.start();
- 从一个apk调用另一个apk中的调起Dialog的功能时候遇到的问题,小笔记!
- 从一个内置apk中安装另一个内置的apk
- 一个apk调用另一个apk的某个activity
- Android:一个apk中调用另一个apk的activity
- 一个apk调用另一个apk的native方法
- eclipse编译apk的时候遇到问题
- 一个apk调用另一个apk
- 一个apk启动另一个apk的方法
- 问题记录:在打包APK的时候遇到的问题
- 问题记录:在打包APK的时候遇到的问题
- 从一个APK调用另外一个APK中的一个ACTIVITY
- android调用远程service(一个apk调用另一个apk的service)
- 在一个APK中调用另一个APK
- android 一个apk调用另一个apk
- 用eclipes编译出apk的时候遇到的问题
- apk调用另一个apk
- apk调用另一个apk
- apk调用另一个apk
- 前端模块化发展简史
- WEBSITE知识点积累
- [PhantomJS] Https Redirect Problem with PhantomJS + Selenium
- Android APP测试可修改接口访问链接,无需重装apk
- Firefox扩展推荐
- 从一个apk调用另一个apk中的调起Dialog的功能时候遇到的问题,小笔记!
- cmd命令介绍
- 回调的本质
- 简单理解与实验生成对抗网络GAN
- 学习笔记——JAVA反射<2>反射机制的效率问题和操作泛型
- Bitbucket创建新repository
- 我收藏的JS文章
- RESTful API设计技巧经验总结
- java的可变参数