我们一直致力于“借鉴其他应用程序”权限,为我们在Marshmallow上的应用程序开发一个很酷的功能。
我们的应用程序的新功能与首次安装我们的应用程序完美配合。 我们对“Draw over other apps”权限没有任何问题。
但是,当我们的应用程序被删除并重新安装或使用更新版本更新时,我们的梦魇就开始了。 新功能根本不起作用,根本没有错误消息。
当我们检查“绘制其他应用程序”的状态时,它已被激活。这意味着我们的新功能应该可行,但事实并非如此。
但是,一旦我们将“Draw over other apps”状态从“已停用”更新为激活状态,即使已经“激活”,新功能也会再次完美运行。
我们认为我们不会要求用户在每次更新或重新安装时手动刷新“绘制其他应用”。
任何帮助将不胜感激。 任何人吗?
1.Activity - 2.Service(PopupWindow)
2.Service
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);
}
}