Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等)

您所在的位置:网站首页 vivo手机存储权限 Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等)

Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等)

2023-12-28 23:10| 来源: 网络整理| 查看: 265

Unity通过Android Studio 获取手机权限(存储、录音、相机等)

本文分享自华为云社区 Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等) 

常用权限 复制代码 一、动态获取权限流程

Android系统从6.0开始对一些危险的权限进行了动态获取权限 下图是动态获取权限的额流程图

在这里插入图片描述

二、使用步骤

在使用获取权限的时候大致可以分为两种情况,一种是打开应用的时候就直接获取应用所需的权限,这时候就把所有权限直接在初始化的时候就获取到。另一种是在使用某种功能时,才获取权限。比如应用内使用相机、录音机等。

接下来使用第二种方法获得权限

1.检测当前是否已获取权限

代码如下(示例):

int permissioncamera; int permissionaudio; // 判断targetSdkVersion 是否大于等于23,这个都是自己写的,一般也不用判断,直接根据自己的版本选择方法就行 if (MainActivity.this.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.M) { //安卓6.0 以上使用 permissioncamera = MainActivity.this.checkSelfPermission(android.Manifest.permission.CAMERA); permissionaudio = MainActivity.this.checkSelfPermission(android.Manifest.permission.RECORD_AUDIO); } else { //安卓6.0 以下使用 permissioncamera=PermissionChecker.checkSelfPermission(MainActivity.this,android.Manifest.permission.CAMERA); permissionaudio=PermissionChecker.checkSelfPermission(MainActivity.this,android.Manifest.permission.RECORD_AUDIO); } //检查是否已经获取了相机权限: if(permissioncamera!= PackageManager.PERMISSION_GRANTED) //检查是否已经获取了录音权限: if(permissionaudio!= PackageManager.PERMISSION_GRANTED) 复制代码 2.检测当前安卓版本

由于安卓6.0前后的获取方法不同,所以在使用的时候先判断一下版本

代码如下(示例):

if (MainActivity.this.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.M) 复制代码 3.申请动态获取权限 MainPort.this.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 0x01); //在此String中添加各种权限一款获取 @Override //这是弹窗选择后的回调 public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { //允许权限 case 0x01: { // 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. } //拒绝并不在询问 runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainPort.this,"您拒绝了录音权限,请手动去应用->设置,修改权限",Toast.LENGTH_LONG).show(); } }); return; } } } 复制代码 实战演练

AS端:

public void permissionDemo(){ //使用录音前首先需要获取权限 int permissionCheck= MainPort.this.checkSelfPermission(android.Manifest.permission.RECORD_AUDIO); //int permissionCheck = ContextCompat.checkSelfPermission(MainPort.this, Manifest.permission.RECORD_AUDIO); //如果有权限则返回PackageManager.PERMISSION_GRANTED,否则返回PackageManager.PERMISSION_DENIED。 if(permissionCheck!= PackageManager.PERMISSION_GRANTED) {//为获取权限时 //请求获取权限 MainPort.this.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 0x01); //用new String[]的原因是可以在String[]中存储多个需要的权限,一次过请求 //将回调onRequestPermissionsResult()方法 } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case 0x01: { // 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. } runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainPort.this,"您拒绝了录音权限,请手动去应用->设置,修改权限",Toast.LENGTH_LONG).show(); } }); return; } } } 复制代码

Unity端:

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic("currentActivity"); //在需要使用的地方调用此方法即可获取权限 jo.Call("permissionDemo"); 复制代码 总结

本篇文章介绍了如何在Unity端获取安卓的权限,还有一个实例 欢迎品尝!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3