我们一直致力于“在其他应用程序上绘制”权限,以便为我们在 Marshmallow 上的应用程序开发一个很酷的功能。
我们应用程序的新功能与我们应用程序的首次安装完美配合。“在其他应用程序上绘制”权限没有任何问题。
然而,当我们的应用程序被删除并重新安装或更新为新版本时,我们的噩梦就开始了。新功能根本不起作用,根本没有错误消息。
当我们检查“在其他应用程序上绘制”的状态时,它已被激活。这意味着我们的新功能应该可以工作,但它没有。
但是,一旦我们将“在其他应用程序上绘制”状态从未激活状态刷新为已激活状态,即使它已经“激活”,一项新功能又可以完美运行。
我们认为我们不能要求用户在每次更新或重新安装时手动刷新“绘制其他应用程序”。
任何帮助将不胜感激。任何人?
1.Activity - 2.Service(PopupWindow)
3.PermissionOverlay活动
2.服务
public void runPopup() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(!Settings.canDrawOverlays(getBaseContext())) {
setOverlayPermission();
return;
}
}
// other working..
}
public void setOverlayPermission() {
Runnable myRunnable = new Runnable() {
@Override
public void run() {
new PermPermission(instance)
.setPermissionListener(hecpermissionlistener)
.setDeniedMessage("The necessary permissions!")
.setPermissions(android.Manifest.permission.SYSTEM_ALERT_WINDOW)
.check();
}
};
grantHandler.post(myRunnable);
}
3.PermissionOverlay活动
public void requestPermissions(ArrayList<String> needPermissions) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + packageName));
startActivityForResult(intent, REQ_CODE_REQUEST_SETTING);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQ_CODE_REQUEST_SETTING:
checkPermissions(true);
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}