Android 棉花糖运行时权限
首先,首先感谢大家,在来问这个问题之前,我已经搜索了很多来寻找答案,有很多像我这样的问题,但我根本无法配置我需要的,所以我希望我的问题不会收到duplicare,否则我会得到负面声誉。因此,我制作了一款手电筒应用程序,但它仍然会在一些使用Android 6.0或更高版本(可能是7)的设备上崩溃,以下是我所做的: 在onCreate中,我请求如下权限:Android 棉花糖运行时权限,android,permissions,camera,Android,Permissions,Camera,首先,首先感谢大家,在来问这个问题之前,我已经搜索了很多来寻找答案,有很多像我这样的问题,但我根本无法配置我需要的,所以我希望我的问题不会收到duplicare,否则我会得到负面声誉。因此,我制作了一款手电筒应用程序,但它仍然会在一些使用Android 6.0或更高版本(可能是7)的设备上崩溃,以下是我所做的: 在onCreate中,我请求如下权限: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if(check
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if(checkSelfPermission(Manifest.permission.CAMERA) ==
PackageManager.PERMISSION_GRANTED){
startCamera();
}
else{
String [] permissionRequest = {Manifest.permission.CAMERA};
requestPermissions(permissionRequest,
CAMERA_PERMISSION_REQUEST_CODE);
}
}
else if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N){
startCamera();
}
}
下面是我的startCamera()方法:
在AndroidManifest中,我还声明了权限:
<uses-permission android:name="android.permission.CAMERA"/>;
<uses-feature android:name="android.hardware.camera"/>;
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera.flash" />
;
;
你们能帮我在Android 6.0及更高版本的运行时用toast消息实现权限要求吗,就像现在一样,我已经在emulator上试过了,这是权限问题,但我的应用程序不拍照和录制任何内容,因为它是一个手电筒应用程序,我想更改toast消息,但在某些物理设备上仍然很粗糙,我必须指出,我曾尝试使用PermissionDispatcher,但无法进行配置,因此我需要您的帮助:)
另外,当我按下Overview按钮时,应用程序崩溃了(我想这就是它的名称,在home按钮旁边),这是它的图片()你能帮我吗?因为我真的不知道它是如何调用的,我也找不到它的修复方法:)
许可证的错误日志:
Fatal Exception: java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.bucur.mihai.flash/com.bucur.mihai.flash.MainActivity}:
java.lang.RuntimeException: Fail to connect to camera service
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Caused by java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.<init>(Camera.java:525)
at android.hardware.Camera.open(Camera.java:381)
at com.bucur.mihai.flash.MainActivity.startCamera(MainActivity.java:110)
at com.bucur.mihai.flash.MainActivity.onCreate(MainActivity.java:70)
at android.app.Activity.performCreate(Activity.java:6034)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at
致命异常:java.lang.RuntimeException:无法启动活动
ComponentInfo{com.bucur.mihai.flash/com.bucur.mihai.flash.MainActivity}:
java.lang.RuntimeException:无法连接到摄影机服务
在
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
在android.app.ActivityThread.access$800(ActivityThread.java:156)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:211)
位于android.app.ActivityThread.main(ActivityThread.java:5373)
位于java.lang.reflect.Method.invoke(Method.java)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
由java.lang.RuntimeException引起:无法连接到摄像头服务
在android.hardware.Camera.(Camera.java:525)
打开(Camera.java:381)
位于com.bucur.mihai.flash.MainActivity.startCamera(MainActivity.java:110)
位于com.bucur.mihai.flash.MainActivity.onCreate(MainActivity.java:70)
位于android.app.Activity.performCreate(Activity.java:6034)
在
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
在
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
在android.app.ActivityThread.access$800(ActivityThread.java:156)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:211)
位于android.app.ActivityThread.main(ActivityThread.java:5373)
位于java.lang.reflect.Method.invoke(Method.java)
位于java.lang.reflect.Method.invoke(Method.java:372)
在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
按钮按下错误的错误日志:
Fatal Exception: java.lang.RuntimeException: Failed to resolve attribute at index 0
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:616)
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6786)
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6955)
at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:735)
at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:679)
at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:62)
at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.support.v7.view.menu.ListMenuPresenter.getMenuView(ListMenuPresenter.java:105)
at android.support.v7.app.AppCompatDelegateImplV9$PanelFeatureState.getListMenuView(AppCompatDelegateImplV9.java:2030)
at android.support.v7.app.AppCompatDelegateImplV9.initializePanelContent(AppCompatDelegateImplV9.java:1310)
at android.support.v7.app.AppCompatDelegateImplV9.openPanel(AppCompatDelegateImplV9.java:1152)
at android.support.v7.app.AppCompatDelegateImplV9.onKeyUpPanel(AppCompatDelegateImplV9.java:1517)
at android.support.v7.app.AppCompatDelegateImplV9.onKeyUp(AppCompatDelegateImplV9.java:964)
at android.support.v7.app.AppCompatDelegateImplV9.dispatchKeyEvent(AppCompatDelegateImplV9.java:958)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:318)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2438)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4582)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4537)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4201)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4258)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4234)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4421)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2480)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2074)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2065)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2457)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
致命异常:java.lang.RuntimeException:无法解析索引0处的属性
位于android.content.res.TypedArray.getLayoutDimension(TypedArray.java:616)
在android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6786)
在android.view.ViewGroup$MarginLayoutParams(ViewGroup.java:6955)
位于android.widget.FrameLayout$LayoutParams(FrameLayout.java:735)
在android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:679)中
在android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:62)中
在android.view.LayoutInflater.inflate(LayoutInflater.java:499)
在android.view.LayoutInflater.充气(LayoutInflater.java:415)
在android.support.v7.view.menu.ListMenuPresenter.getMenuView(ListMenuPresenter.java:105)中
在android.support.v7.app.AppCompateDelegateImplV9$PanelFeatureState.getListMenuView(AppCompateDelegateImplV9.java:2030)
在android.support.v7.app.AppCompateDelegateImplv9.initializePanelContent(AppCompateDelegateImplv9.java:1310)中
在android.support.v7.app.AppCompateDelegateImplV9.openPanel(AppCompateDelegateImplV9.java:1152)上
在android.support.v7.app.appcompatedelegateimplv9.onkeyupanel(appcompatedelegateimplv9.java:1517)上
在android.support.v7.app.appcompatedelegateimplv9.onKeyUp(appcompatedelegateimplv9.java:964)
在android.support.v7.app.AppCompateDelegateImplV9.dispatchKeyEvent(AppCompateDelegateImplV9.java:958)上
位于android.support.v7.app.AppCompateDelegateImplbase$AppCompateWindowCallBackbase.dispatchKeyEvent(AppCompateDelegateImplbase.java:318)
在com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2438)上
在android.view.ViewRootImpl$viewPostimeiInputStage.processKeyEvent(ViewRootImpl.java:4582)中
位于android.view.ViewRootImpl$viewPostimeiInputStage.onProcess(ViewRootImpl.java:4537)
在android.view.ViewRootImpl$InputStage.deliver上(ViewRootImpl.java:4068)
在android.view.ViewRootImpl$InputStage.onDeliverToNext中(ViewRootImpl.java:4121)
在android.view.ViewRootImpl$InputStage.forward中(ViewRootImpl.java:4087)
在android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4201)中
在android.view.ViewRootImpl$InputStage.apply上(ViewRootImpl.java:4095)
在android.view.ViewRootImpl$AsyncInputStage.apply上(ViewRootImpl.java:4258)
在android.view.V
Fatal Exception: java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.bucur.mihai.flash/com.bucur.mihai.flash.MainActivity}:
java.lang.RuntimeException: Fail to connect to camera service
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Caused by java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.<init>(Camera.java:525)
at android.hardware.Camera.open(Camera.java:381)
at com.bucur.mihai.flash.MainActivity.startCamera(MainActivity.java:110)
at com.bucur.mihai.flash.MainActivity.onCreate(MainActivity.java:70)
at android.app.Activity.performCreate(Activity.java:6034)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.access$800(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at
Fatal Exception: java.lang.RuntimeException: Failed to resolve attribute at index 0
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:616)
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6786)
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6955)
at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:735)
at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:679)
at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:62)
at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.support.v7.view.menu.ListMenuPresenter.getMenuView(ListMenuPresenter.java:105)
at android.support.v7.app.AppCompatDelegateImplV9$PanelFeatureState.getListMenuView(AppCompatDelegateImplV9.java:2030)
at android.support.v7.app.AppCompatDelegateImplV9.initializePanelContent(AppCompatDelegateImplV9.java:1310)
at android.support.v7.app.AppCompatDelegateImplV9.openPanel(AppCompatDelegateImplV9.java:1152)
at android.support.v7.app.AppCompatDelegateImplV9.onKeyUpPanel(AppCompatDelegateImplV9.java:1517)
at android.support.v7.app.AppCompatDelegateImplV9.onKeyUp(AppCompatDelegateImplV9.java:964)
at android.support.v7.app.AppCompatDelegateImplV9.dispatchKeyEvent(AppCompatDelegateImplV9.java:958)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:318)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2438)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4582)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4537)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4201)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4258)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4095)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4068)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4121)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4087)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4234)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4421)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2480)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2074)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2065)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2457)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)