繁体   English   中英

如何在React-Native中从应用程序启动叠加窗口设置

[英]How to start overlay window setting from app in react-native

我需要为我的应用打开覆盖设置窗口。 当然,我的清单文件已经使用SYSTEM_ALERT_WINDOW权限。

public class MainActivity extends ReactActivity {
private static final int CODE_DRAW_OVER_OTHER_APP_PERMISSION = 2084;

@Override
protected String getMainComponentName() {
    return "MyToolbox";
}

@Override
protected ReactActivityDelegate createReactActivityDelegate() {
    return new ReactActivityDelegate(this, getMainComponentName()) {
        @Override
        protected ReactRootView createRootView() {
            return new RNGestureHandlerEnabledRootView(MainActivity.this);
        }
    };
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requireDrawOverlayPermission();
}

//Ask draw overlay permission
void requireDrawOverlayPermission() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package: " + getPackageName()));
        startActivityForResult(intent, CODE_DRAW_OVER_OTHER_APP_PERMISSION);
    } else {
        //TODO: Permission granted
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CODE_DRAW_OVER_OTHER_APP_PERMISSION) {
        if (Settings.canDrawOverlays(this)) {
            //TODO: Permission granted
        } else {
            Toast.makeText(this, "Draw over the app is not available", Toast.LENGTH_SHORT).show();
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

}

我的Android Studio首次运行了调试程序,我的应用程序崩溃了。 下次,它不会崩溃,但不会为我显示叠加设置窗口。 我可以看到屏幕闪烁,但立即关闭。 我的代码有什么问题? 谢谢!

最后,我终于弄明白了。 该设置窗口需要软件包名称才能知道哪个应用程序需要此权限。 uri无法解析我的包名称,因为我在“ package:”和“ getPackageName()”之间放置了一个空格。 我按如下所示将其删除,并且一切正常!

Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM