【问题标题】:How to turn off overlay permission on android如何关闭android上的覆盖权限
【发布时间】:2017-10-27 14:12:05
【问题描述】:

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

谈论覆盖权限。

他们将权限检查代码添加到宿主反应原生视图的活动中。

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

似乎需要权限,因为 react native 需要在叠加层中显示调试窗口。

如何在生产环境中关闭它?

【问题讨论】:

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


    【解决方案1】:

    我在发布时将其关闭,并进行了两项更改,一项在清单中,一项在代码中。

    首先:在您的主清单 (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);
        }
    }
    

    【讨论】:

    • 使用BuildConfig.DEBUG 效果很好。我不需要将SYSTEM_ALERT_WINDOW 添加到我的AndroidManifest.xml 中,调试菜单仍然显示得很好。
    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多