2016-11-18 4 views
-1

私は以下のようなjavaクラスを持っています。複数のパーミッション

public class PermisssionAction { 

    public static void requestPermission(Activity activity, String permission) { 
     if (ContextCompat.checkSelfPermission(activity, permission) 
       != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(activity, new String[]{permission}, 0); 
     } 
    } 

} 

私はmainactivityでそのメソッドを呼び出して、以下のようにappのアクセス権を取得しました。

public class MainActivity extends AppCompatActivity { 
    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 

     PermisssionAction.requestPermission(this, Manifest.permission.READ_PHONE_STATE); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      PermisssionAction.requestPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); 
     } 
     PermisssionAction.requestPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     PermisssionAction.requestPermission(this, Manifest.permission.READ_CONTACTS); 
     PermisssionAction.requestPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION); 
     PermisssionAction.requestPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 
     PermisssionAction.requestPermission(this, Manifest.permission.READ_SMS); 
     PermisssionAction.requestPermission(this, Manifest.permission.INTERNET); 
     PermisssionAction.requestPermission(this, Manifest.permission.BLUETOOTH); 
     PermisssionAction.requestPermission(this, Manifest.permission.ACCESS_WIFI_STATE); 
     PermisssionAction.requestPermission(this, Manifest.permission.SEND_SMS); 



     Intent startupintent = new Intent(MainActivity.this, StartupActivity.class); 
     startActivity(startupintent); 
     finish(); 


    } 
} 

は今、私はそれがエミュレータで一度にすべての許可を求める一方で、それは、本当のモバイル上でアプリを実行している間だけ許可を求める理由を理解することはできませんメートル。 また、アプリが最初にロケーション権限を取得したとします。アプリを再度開いても、実際のデバイスで保留中の別の権限が尋ねられます。できますか?

答えて

1

最初に、dangerousのアクセス許可にはrequestPermissions()を使用してください。 INTERNETは、例えばprotectionLeveldangerousではありません。

第二には、あなたが要求しているString[]すべての権限を使用して、一度requestPermissions()を呼び出します。現時点では、requestPermissions()に何度も呼び出しています。要求ごとに1つの許可が必要です。

+0

を参照してください。ただし、方法を詳しく見てもわかるように、リクエストする前に私も許可を確認しています。唯一の違いは、私は配列の代わりに一つずつ質問しています。 –

0
  1. 許可グループがあります。ユーザーインターフェイスでのアクセス許可を求めます。参照:https://developer.android.com/guide/topics/security/permissions.html
  2. 一部のgradleバージョンは、Android Phoneですべての許可を自動的に許可しています。 (6.0 +デバイスを搭載したOld Gradleバージョン)
  3. ユーザー簡単な理解とユーザーのための簡単な許可。それ以外のネイティブコードでは、すべてのアクセス許可がチェックされているかどうかをチェックする必要があります。許可のコールバックを受け入れます。検索アンドロイドのためのEasypermission。そのgitで利用可能です。

ところで "(Build.VERSION.SDK_INT> = Build.VERSION_CODES.JELLY_BEAN)"を既存のコードでMarshmallowに変更します。コードの残りの部分については、https://developer.android.com/training/permissions/requesting.html

関連する問題