启动应用程序并检查分析报告时,我的android应用程序有时会随机崩溃,我得到的异常是:
{第三方工具}需要android.permission.CAMERA,但不是
在您的AndroidManifest.xml文件中找到。
PermissionsHandler.CheckPermissions(Android.Content.Context上下文,
System.String权限,System.Boolean throwOnError)
PermissionsHandler.CheckCameraPermissions(Android.Content.Context
上下文,System.Boolean throwOnError)CameraController.SetupCamera
()
CameraAnalyzer.SetupCamera()
在用户导航到特定页面之前,我用于条形码的工具甚至没有使用相机服务。我只是觉得可能是在运行时它正在寻找相机权限,有时应用清单尚未准备就绪或未加载,因此该应用假定相机权限未包含在清单中,即使它们包含在其中。
我的问题是
AndoridManifest是在应用程序启动时出现还是我必须对应用程序进行一些更改,以确保它等到所有权限设置都准备就绪后才开始?
是否有人遇到类似错误或可以提出任何解决方案的建议?
更新:
ZXing是需要相机服务的第三方工具。但是,一旦应用启动,就会在某些页面中调用此第三方API,并在这些页面上请求相机许可,但应用在启动时崩溃,但有以下例外:
例外:
PermissionsHandler.CheckPermissions (Android.Content.Context context, System.String permission, System.Boolean throwOnError)
System.UnauthorizedAccessException: ZXing.Net.Mobile requires: android.permission.CAMERA, but was not found in your AndroidManifest.xml file.
PermissionsHandler.CheckPermissions (Android.Content.Context context, System.String permission, System.Boolean throwOnError)
PermissionsHandler.CheckCameraPermissions (Android.Content.Context context, System.Boolean throwOnError)
CameraController.SetupCamera ()
CameraAnalyzer.SetupCamera ()
ZXingSurfaceView+<SurfaceCreated>d__3.MoveNext ()
ExceptionDispatchInfo.Throw ()
AsyncMethodBuilderCore+<>c.<ThrowAsync>b__6_0 (System.Object state)
SyncContext+<>c__DisplayClass2_0.<Post>b__0 ()
Thread+RunnableImplementor.Run ()
IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this
最佳答案
如前所述,here CAMERA权限是危险的,因此它需要运行时权限。建议您在启动该应用程序以征求该权限后出现的第一个活动上编写该代码。
private void VerifyPermission(){
int permissionWriteExternalStorage = ActivityCompat.checkSelfPermission(context, Manifest.permission.CAMERA);
if(permissionWriteExternalStorage != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(YourActivityName.this, STORAGE_PERMISSIONS, 1);
}
}
只需在onCreate中调用此方法:
VeriryPermission();
请记住,我发布的方法非常简单,以后可以升级。