2016-10-10 11 views
0

サードパーティが使用できるSDK(.aar)を開発中です。私のサンプルアプリケーションでは、aarを使用すると、アプリケーションがカメラの許可を求めるメッセージを表示しないことがわかります。私はAARを開いて、そのmanifest.xmが表示されたら、それは以下が含まれますAndroidアプリケーションでカメラの権限が要求されていません

<!-- WRITE_EXTERNAL_STORAGE is needed because we are storing there the config files of KM --> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.read_external_storage" /> 
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" /> 
<uses-permission android:name="android.permission.CAMERA" /> 

<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
<uses-feature android:name="android.hardware.sensor.accelerometer" /> 

カメラが必要な権限として存在しているので、サンプルアプリをインストールする際に、それは来ていない理由を誰も私を伝えることができます。

+0

どこにやって来るのですか? – CommonsWare

+0

はAndroid 6.0搭載のデバイスにインストールするためですか? – NecipAllef

+0

手動でAPKを電話機に設置してインストールしようとすると、アプリケーションの録音オーディオなどの機能のリストが表示され、ストレージが変更されますが、カメラの兆候はありません。私はアンドロイドバージョン4.4.4を使用しています。 – Sid

答えて

0

私は権限をチェックする方法です:

public boolean permissionsGranted() { 

    boolean allPermissionsGranted = true; 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { 
     boolean hasWriteExternalPermission = (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); 
     boolean hasReadExternalPermission = (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); 
     boolean hasCameraPermission = (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED); 
     if (!hasWriteExternalPermission || !hasReadExternalPermission || !hasCameraPermission) { 
      allPermissionsGranted = false; 
     } 
    } 
    return allPermissionsGranted; 
} 

これはpermissionsGranted()メソッドがfalse

String[] permissions = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE}; 
         ActivityCompat.requestPermissions(this, permissions, 1); 

を返し、あなたは上書きする必要がある場合、私は、要求を行う方法ですonRequestPermissionsResultメソッドは、以下のとおりです。

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 1: { 
      boolean startActivity = true; 
      for (int i = 0; i < grantResults.length; i++) { 
       if (grantResults.length > 0 && grantResults[i] != PackageManager.PERMISSION_GRANTED) { 
        String permission = permissions[i]; 
        boolean showRationale = shouldShowRequestPermissionRationale(permission); 
        if (!showRationale) { 
         Intent intent = new Intent(); 
         intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
         Uri uri = Uri.fromParts("package", getActivity().getPackageName(), null); 
         intent.setData(uri); 
         startActivityWithIntent(intent); 
         Toast.makeText(this, "Enable required permissions", Toast.LENGTH_LONG).show(); 
         startActivity = false; 
         break; 
        } else { 
         Toast.makeText(this, "Enable required permissions", Toast.LENGTH_LONG).show(); 
         break; 
        } 
       } 
      } 
      if(startActivity) { 
       getActivity().finish(); 
       startActivityWithIntent(getIntent()); 
      } 
     } 
    } 
} 

public void startActivityWithIntent(Intent intent){ 
    startActivity(intent); 
} 

showRationaleは、ユーザがアクセス権を有効にすることができるようにので、私は設定の活動を開始した場合、再び尋ねることはありませんチェックが入っているかどうかを確認することです。

もっと明快にする必要がある場合は教えてください

+0

私は許可を確認する必要はありません、なぜ私はマニフェストがそれを持っているにもかかわらず、カメラのアクセス許可を求められていない理由を知る必要があります。 – Sid

+0

以下のものはすべて、あなたに許可のプロンプトを表示すべきではありません。許可は、marshmallow以上でのみ要求されます。おそらくあなたはカメラを開きたいですか?私たちはあなたのコードを見ることができますか? – upile

関連する問題