如何关闭android上的覆盖权限

时间:2017-07-27 10:05:06

标签: android react-native react-native-android

https://facebook.github.io/react-native/docs/integration-with-existing-apps.html

https://medium.com/react-native-development/fixing-problems-in-react-native-caused-by-new-permission-model-on-android-1e547f754b8

讨论叠加权限。

他们将权限检查代码添加到主机响应本机视图的活动中。

AsyncTask

似乎需要权限,因为本机需要在覆盖中显示调试窗口。

如何在生产构建中将其关闭?

1 个答案:

答案 0 :(得分:3)

我在发布时关闭了两个更改,一个在清单中,另一个在代码中。

首先:在您的主Manifest(src / main / AndroidManifest.xml)中,删除该行:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

在src / debug / AndroidManifest.xml中添加一个类似于此

的新清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.mycompany.myapp">

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
</manifest>

这将仅在调试变体上合并权限。

其次,对于您提到的代码,我添加了对BuildConfig.DEBUG的检查:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (!Settings.canDrawOverlays(this) && BuildConfig.DEBUG) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
    }
}