Android不需要权限-棉花糖6.0.1 Unity

Android不需要权限-棉花糖6.0.1 Unity,android,unity3d,android-6.0-marshmallow,android-permissions,Android,Unity3d,Android 6.0 Marshmallow,Android Permissions,我正在构建一个纸板应用程序,并在Nexus 6P上进行测试。 我的问题是,当我安装应用程序时,它不要求任何权限。 在我的舱单中,我有: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 然后,如果我想在我的应用程序

我正在构建一个纸板应用程序,并在Nexus 6P上进行测试。 我的问题是,当我安装应用程序时,它不要求任何权限。 在我的舱单中,我有:

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

然后,如果我想在我的应用程序中从互联网下载一些文件,它就不起作用了。它甚至没有创建com。文件夹

我必须手动转到应用程序信息并检查存储权限

这很奇怪,因为当为GearVR构建应用程序并在Note4上进行测试时,它需要获得许可(在Note4中,我使用sd卡,在Nexus 6P内部)

为什么会这样

谢谢。

从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限
而不是在安装应用程序时。这就是您没有请求对话框的原因


若您需要请求权限,则需要显示请求的基本原理并处理用户迭代结果

发件人:

请求许可: 处理用户选择的选项 在:

从Android 6.0(棉花糖)开始,应用程序不再像以前那样获得所有安装权限。您现在必须在运行时请求权限(用户可以拒绝),并且必须能够在授予权限后随时处理被撤销的权限

如果您现在想使用旧的行为,我相信您应该能够将目标API级别设置为22


请阅读此处的更多信息:

对于Android 6+而言,您需要在运行时请求权限,而不是在启动时请求权限。如果您正在考虑使用Google Play的应用程序

简而言之,您需要在巡更清单中指定权限,并在应用程序标记中包括以下内容

 <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />

然后,在运行时通过Android请求权限


上有一个很好的插件,为了快速修复,您可以针对android 5(api级别22而不是23),权限将继续使用旧的行为

  • 请注意,如果您发布了一个针对android 6(23级)api的应用程序,则不能在更新中否决该目标api级别

我如何在Unity上使用它?我安装了支持库,但它说我必须编辑我没有的build.gradle文件。@mithrandir
build.gradle
-它是一个包含依赖项的文件。所以你需要编辑与Unity development相关的同一个文件。该文件的名称是什么?@mithrandir我不知道。我不团结工作。接受一个答案怎么样?别告诉我他们帮不上忙……我在这里回答得很好
@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}
 <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />