2016-06-26 16 views
1

私は本当に大きな問題(なぜアプリに許可が表示されないのですか?Camera2API?

私はCamera2APIで働いていると、私はそれ標準のGoogle例えば使用しています。

ミスティック私はSamsung S6 android 6.0を使用し、私はこの方法を使用

private void openCamera(int width, int height) { 
    setUpCameraOutputs(width, height); 

    configureTransform(width, height); 
    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); 
    try { 
     if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) { 
      throw new RuntimeException("Time out waiting to lock camera opening."); 

     } 

     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != 
       PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 

     manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler); 


    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     throw new RuntimeException("Interrupted while trying to lock camera opening.", e); 
    } 
} 

です

私はこの方法を期待していますが、manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler); - カメラを開くのではなく、コードが停止しています

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != 
       PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 

は、私の知る限り理解し、それは私のマニフェストには許可が含まれていないことを意味しますが、私がチェックし、適切な許可

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

それはどういう意味があるのでしょうか?

それはチェックをパスしない理由を私は、この権限を持っていますか?

私は Meizu MX5 android 5.1にこのアプリを起動しようとした

、それはカメラを開き、すべてがokです...

はたぶん問題はandroindバージョンでありますか?

私は間違っていますか?どうすれば確認できますか?あなたのサムスンで

+0

あなたはランタイムPermission..Takeに見て、このサンプルhttps://github.com/googlesamples/android-RuntimePermissionsをチェックしてい –

答えて

1

あなたは、Android 6.0、右を使用していると?
thisによると、あなたがマニフェストにパーミッションを宣言した場合でも、あなたは、個別に許可をチェックする必要があり、それが付与されていない場合は、各許可を要求します。
は後に、これを行うには、

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case YOUR_INTEGER_CONSTANT_FOR_THE_CALLBACK: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Log.d(TAG,"Granted"); 
       // permission was granted, yay! Do the 
       // contacts-related task you need to do. 

      } else { 
       Log.d(TAG,"Denied"); 
       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

希望を、この操作を行う代わりに、return

if (ActivityCompat.checkSelfPermission(this,Manifest.permission.CAMERA) != 
     PackageManager.PERMISSION_GRANTED) { 
     return; 
} 

ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.CAMERA},YOUR_INTEGER_CONSTANT_FOR_THE_CALLBACK); 

を、リンクされたページで説明したように、コールバック関数を実装します助けてください。あなたがターゲットAPIが23である場合

0

はあなたに行く:設定 - >アプリケーション - >「アプリ」 - >権限。アクセス許可を手動で設定します。これはターゲットAPIが23以上の場合に発生します。下位バージョンでは正常に動作します。あなたのアプリにアンドロイド6.0以上のアクセス権が自動的に付与されるようにするには、gradleでターゲットAPIを22に変更します。また、アプリケーションにアクセス権を求めるように実装する方が良いでしょう。

関連する問題