Unity打包没有存储权限黑屏的问题

经过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,告诉用户为什么你需要该权限,让用户手动开启该权限。

       }
}

调用多个权限可以看看这个博客:动态获取权限

阅读更多
个人分类: Unity
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭