Unity5.x打包在Android8.x以上系统启动黑屏
发布日期:2021-06-30 19:41:37
浏览次数:3
分类:技术文章
本文共 3596 字,大约阅读时间需要 11 分钟。
原因
渠道要求app的targetSdkVersion要大于等于26
之前一直是targetversion 23的,而targetversion <= 23安装的时候需要的权限默认都是允许的,但是>23的,所需要的危险权限是默认拒绝的,存储权限就是危险权限一类(危险权限和正常权限就自行百度吧)。所以当游戏需要这个权限的时候,由于权限是没有的,而且没有进行权限申请,从而导致了游戏黑屏解决方案A
在MainActivity的onCreate里面加了权限申请的代码,弹出了权限申请询问框了,点击允许,但是,依然黑屏,游戏强退之后查看权限管理,发现存储权限是有的,然后重新打开,游戏正常运行。
问题所在就是在权限申请之前,unity已经报错了:unity:Unable to query for permission: Fragment null must be a public static class to be properly recreated from instance state
也就是说,当unity需要这个权限的时候,权限还没有授予到。而android项目里面涉及到unity的代码就一个UnityPlayerActivity.onCreate,即调用UnityPlayerActivity.onCreate之前需要有权限授予,不然就会导致异常。
解决办法A: 写一个PermissionActivity (作为主Activity),专门做权限申请这件事情,等权限申请成功后,启动原来我们Unity的Activity 注意有两个activity的时候,要在manifest文件里面删除主activity的android:launchMode=“singleTask”,不然后台之后点击图标会重新启动app。 这个解决问题的方法的弊端是如果玩家点击了拒绝权限,依然会黑屏 附上权限申请的代码// PermissionActivity.javapackage com.linxinfa.test;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.widget.Toast;public class PermissionActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback{ private final String[] PERMISSIONS = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE" }; private Context m_context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); m_context = this; // 检测权限 checkAppPermision(); } private void checkAppPermision() { ListpermissionList = new ArrayList (); for (int i = 0; i < PERMISSIONS.length; i++) { if(PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, PERMISSIONS[i])) { permissionList.add(PERMISSIONS[i]); } } if(permissionList.size() > 0) { String[] permissionArray = new String[permissionList.size()]; ActivityCompat.requestPermissions(this, permissionList.toArray(permissionArray), 1); } else { StartGameActivity(); } } public void onRequestPermissionResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) { if(1 == requestCode) { if(grantResults.length > 0) { // 被拒绝的权限列表 List refusePermissionList = new ArrayList (); for(int i=0;i refusePermissionList) { AlertDialog dlg = new AlertDialog.Builder(this) .setTitle("提示") .setMessage("需要权限:" + refusePermissionList.toString()) .setPositiveButton("知道了", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { Toast.makeText(m_context, "要去应用管理设置应用权限", Toast.LENGTH_LONG).show(); } }) .create(); dlg.show(); } // 启动游戏Activity private void StartGameActivity() { Intent intent = new Intent(this, GameActivity.class); this.startActivity(intent); this.finish(); }}
// GameActivity.javapackage com.linxinfa.test;import android.os.Bundle;import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;public class GameActivity extends UnityPlayerActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
解决方案B
升级到5.5.5p1可以解决这个问题
亲测可行,真是坑,直接升级补丁版本即可,不用像方案A那么麻烦转载地址:https://linxinfa.blog.csdn.net/article/details/89890520 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月23日 08时07分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python __doc__获得模块的文档字符串内容
2019-04-30
Python sys.path和模块搜索路径
2019-04-30
github.io网页无法打开(连接不是私密连接)
2019-04-30
git submodule
2019-04-30
linux中source、sh、bash、./有什么区别
2019-04-30
vscode git
2019-04-30
基于MATLAB的二进制数字调制与解调信号的仿真——2FSK
2019-04-30
基于MATLAB的二进制数字调制与解调信号的仿真——2PSK
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——AM
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——DSB
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——SSB
2019-04-30
pyc文件
2019-04-30
操作系统实验之生产者和消费者程序
2019-04-30
操作系统实验之猴子过桥问题的模拟程序
2019-04-30
POJ - 3067 Japan (树状数组 思维)
2019-04-30
POJ - 2352 Stars (树状数组 入门题)
2019-04-30
HDU - 1166 敌兵布阵 (树状数组模板题/线段树模板题)
2019-04-30
CodeForces - 761C Dasha and Password (思维 暴力)
2019-04-30