经过Android8.0之后很多游戏出现没有存储权限黑屏的问题。
有两种解决方法:
第一种。
可以完全解决这个问题,会出现黑屏的问题是因为你使用的Unity版本太旧了,自带的class.jar包不适合现在的android版本,我们只需要更换到Unity2017之后的版本就可以了。
在android studio打包的同学,可以从Unity导出gradle工程。
然后依次替换掉你Android项目中的文件。
libs中的jar包,aar包。
src文件中的asset资源文件,java文件中的unity的Activity脚本,jniLibs文件中的so文件,res中的资源,还有mainfest中的不一样的地方进行合并。
build.gradle中的不一样的地方合并,以Unity的安卓项目为主。
这样差不多就全部替换完成了。
第二种。
根据你使用的unity版本去官网下载版本补丁,可以解决这个问题。下面这个方式可以不用。
如果项目不方便更换unity版本,会出现很多问题的话,就使用这个方式。
方式链接
就是在unity的activity唤醒之前获取到存储权限。
获取单个权限的方式:
int hasWriteContactsPermission=checkSelfPermission
(Manifest.permission.WRITE_EXTERN_STORAGE);
void GetPermission()
{
if(hasWriteContentsPermission !=
PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]
{Manifest.permisssion.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_WRITE_PERMISSION);
returns;
}
//获取权限之后的回调
@Override
public void onRequestPermissionResult(
int requestCode,String[] permissions,int[]{
if(permissions[0].equals(
Manifest.permission.WRITE_EXTERNAL_STORAGE)
&&grantResults[0] ==
PackageManager.PERMISSON_GRANTED){
//用户同意使用权限 -->进入到Unity的Activity
startGetImageThead();
}else{
//如果应用是第一次请求该权限,则直接调用requestPermissions函数去请求权限;
//如果不是则代表用户勾选了“不再提醒”,弹出dialog,告诉用户为什么你需要该权限,让用户手动开启该权限。
}
}
调用多个权限可以看看这个博客:动态获取权限