Marshmallow绘制其他应用问题

时间:2016-05-31 05:35:51

标签: android android-6.0-marshmallow android-permissions system-alert-window

我们一直致力于“借鉴其他应用程序”权限,为我们在Marshmallow上的应用程序开发一个很酷的功能。

我们的应用程序的新功能与首次安装我们的应用程序完美配合。 我们对“Draw over other apps”权限没有任何问题。

但是,当我们的应用程序被删除并重新安装或使用更新版本更新时,我们的梦魇就开始了。 新功能根本不起作用,根本没有错误消息。

当我们检查“绘制其他应用程序”的状态时,它已被激活。这意味着我们的新功能应该可行,但事实并非如此。

但是,一旦我们将“Draw over other apps”状态从“已停用”更新为激活状态,即使已经“激活”,新功能也会再次完美运行。

我们认为我们不会要求用户在每次更新或重新安装时手动刷新“绘制其他应用”。

任何帮助将不胜感激。 任何人吗?

1.Activity - 2.Service(PopupWindow)

3.PermissionOverlay活动

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);
    }

}

0 个答案:

没有答案