1

我们一直致力于“在其他应用程序上绘制”权限,以便为我们在 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);
    }

}
4

0 回答 0