问题描述
- 我们团队在做unity-android工程的时候遇到了相机权限的问题,unity可以有两种模式导出,直接导出apk和导出android工程,后者可以直接用如下的编译后处理,直接在AndroidManifest.xml里面添加相机权限,但是这种方式对于前者——直接导出apk还是获取不到权限。
public static void OnPostprocessBuild(BuildTarget buildTarget, string pathToBuiltProject)
{
if (buildTarget != BuildTarget.Android)
return;
XClass UnityAppController = new XClass(pathToBuiltProject + "/HelloAR U3D/src/main/AndroidManifest.xml");
UnityAppController.WriteBelow("</application>", "<uses-permission android:name=\"android.permission.CAMERA\" />");
}
问题解决
- 经过查找资料,发现unity导出android工程的权限机制是根据代码里面需要哪些权限然后自动生成的,不管是直接导出apk还是导出android工程。
- 于是这个问题就可以通过直接在代码里添加一些不必要的调用相机的代码即可,我添加了如下代码:
private IEnumerator OpenCamera()
{
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
if (!Application.HasUserAuthorization(UserAuthorization.WebCam)) yield break;
WebCamDevice[] devices = WebCamTexture.devices;
}
- 如此即可不需要之前的编译后处理代码也可以得到相机权限,完美解决问题。
参考链接:调用相机的参考链接