2015-09-16 9 views

答えて

46

Use ContextCompat.checkSelfPermission()ActivityCompat.requestPermissions()、及びActivityCompat.shouldShowPermissionRequestRationale()、。これらは下位互換性があります。 Androidの古いバージョンを使用している場合は、「正しいことを行います」(の場合はPackageManager.PERMISSION_GRANTEDを返します)。

+1

感謝を使用していません!サポートライブラリv4は良い判断です。 – Ardi

+1

はい、常にv23より前にPERMISSION_GRANTEDを返します – weigan

+3

サポートv4も使用し、ContextCompat.checkSelfPermission(this、Manifest.permission.READ_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTEDはアンドロイド2.3.3でHTC Incredibleでfalseを返します。どんな考え? – Anonymous

1

ビルドバージョンif(Build.Version.SDK_INT >= Build.VERSION_CODES.MARSHMALLOW)を確認できます。そして、そこではmarshmallow権限を扱い、そうでなければ他のバージョンを扱います。

4

ちょうどあなたのAndroidのバージョンが前に許可をチェックし得るチェック:あなたはいけない場合

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
        // TODO: Consider calling 
        // public void requestPermissions(@NonNull String[] permissions, int requestCode) 
        // here to request the missing permissions, and then overriding 
        // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
        //           int[] grantResults) 
        // to handle the case where the user grants the permission. See the documentation 
        // for Activity#requestPermissions for more details. 
        return; 
       } 
      }else{ 
       //Do Your Stuff 
      } 
0

checkSelfPermissionはsdk23以上で利用できます。

許可を確認できますRパッケージマネージャに

public static Boolean checkpermissions(Activity activity) { 


     PackageManager mPackageManager = activity.getPackageManager(); 
     int hasPermStorage = mPackageManager.checkPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, activity.getPackageName()); 


     if (hasPermStorage != PackageManager.PERMISSION_GRANTED) { 
      // do stuff 
      //Toast.makeText(getApplicationContext(), "No permission", Toast.LENGTH_LONG).show(); 

      return false; 
     } else if (hasPermStorage == PackageManager.PERMISSION_GRANTED) { 

      // do stuff 
      //Toast.makeText(getApplicationContext(), "Has permission", Toast.LENGTH_LONG).show(); 

      return true; 
     }else 
      return false; 
    } 
関連する問題