Android 棉花糖运行时权限

Android 棉花糖运行时权限,android,permissions,camera,Android,Permissions,Camera,首先,首先感谢大家,在来问这个问题之前,我已经搜索了很多来寻找答案,有很多像我这样的问题,但我根本无法配置我需要的,所以我希望我的问题不会收到duplicare,否则我会得到负面声誉。因此,我制作了一款手电筒应用程序,但它仍然会在一些使用Android 6.0或更高版本(可能是7)的设备上崩溃,以下是我所做的: 在onCreate中,我请求如下权限: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if(check

首先,首先感谢大家,在来问这个问题之前,我已经搜索了很多来寻找答案,有很多像我这样的问题,但我根本无法配置我需要的,所以我希望我的问题不会收到duplicare,否则我会得到负面声誉。因此,我制作了一款手电筒应用程序,但它仍然会在一些使用Android 6.0或更高版本(可能是7)的设备上崩溃,以下是我所做的:

在onCreate中,我请求如下权限:

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)