0

私は自分のアクティビティでセルフをするオプションがあります。私の電話番号(Lenovo K3注)をチェックしたところ、うまくいきました。しかし、今日はモトローラ(Android 6)でクラッシュしました。これはクラッシュである:ここではAndroid Mカメラのセキュリティ例外

Fatal Exception: java.lang.SecurityException 
Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.motorola.camera/.Camera clip={text/uri-list U:file:///storage/emulated/0/image.jpg} (has extras) } from ProcessRecord{735d251 15134:com.galleri5.android/u0a149} (pid=15134, uid=10149) with revoked permission android.permission.CAMERA 

は私のマニフェストです:

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 

    <uses-feature android:name="android.hardware.camera.autofocus" 
     android:required="false"/> 

    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 

    <uses-feature 
     android:name="android.hardware.camera" 
     android:required="false" /> 

その理由、そしてどのように私はこの問題を解決すべきである何ができますか?これは、onClickの機能にあります

+0

チェックこのリンクhttp://developer.android.com/intl/es/training/permissions/requesting.html –

+0

@MiguelBenitez私が持っていますそれをチェックした。 –

+0

設定を使用してアプリケーションのパーミッションを確認してください。 –

答えて

1

あなたの問題は、これを試してみてください。

public void onClick(View v) { 
       if ((ContextCompat.checkSelfPermission(SelfieActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) 
         != PackageManager.PERMISSION_GRANTED) && 
         (ContextCompat.checkSelfPermission(SelfieActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) 
         && (ContextCompat.checkSelfPermission(SelfieActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) { 
        requestCameraAndExternalPermission(); 
       } else { 
        if (grantResults.length == 3 && grantResults[0] == PackageManager.PERMISSION_GRANTED 
        && grantResults[1] == PackageManager.PERMISSION_GRANTED 
        && grantResults[2] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_SHORT).show(); 
       takeSelfie(); 
        } else { 
         Toast.makeText(getApplicationContext(), "Some Permissions Denied", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 
+0

最初の 'if'については、許可されていないパーミッションが1つでもあっても、' &| 'の代わりに' || '私はその許可を求める必要があります。どう思いますか? –

+0

ステムの種類が異なる場合は、それぞれの許可を求めるのが良いでしょう。 –

+0

それはうまくいくでしょう。ありがとう。 –