这几天发版本遇到个问题,进入游戏总是黑屏,经过多方调试查找发现,是因为存储卡读写权限没有开启导致的,手动打开全部权限可以正常进入游戏。安卓工程里面是有权限设置的,可是为什么进入游戏不会弹出权限使用提示了,正常情况应该会弹出提示框,用户允许就可以进游戏了。
后来经过多方查找才解决了问题,因为不是专业的安卓开发者很多东西都不懂,幸好unity做的游戏使用的安卓知识点也不多,最主要的是不能上官网查真是坑死人,为了防止忘记所以在这里记录一下解决方法。
先记录一下uses-permission和permission的区别,uses-permission是申请系统或其他应用的权限时使用的,permission是自己的应用需要开放某些权限时使用的,参考https://blog.csdn.net/headmaster110/article/details/52797952
由于在安卓6.0(API > 23)以后不需要申请android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE这两权限了,可以直接使用,小于这个api的还需要申请,也就是minSdkVersion和targetSdkVersion这两属性其中一个小于23的还是需要申请的,一个兼容的做法是设置权限时带上maxSdkVersion属性,比如:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>
这样设置,api小于23时会弹出使用权限提示框,大于23时不弹出,可以直接使用,问题就解决了。
参考https://blog.csdn.net/xiechengfa/article/details/52699233