Android-Mの新しい実行時アクセス権が最低23のAPIレベルを要求していますが、私のプロジェクトでは最低16のAPIレベルが必要です。最低SDK <23でcheckSelfPermissionを設定することはできますか?
だから、どのようにこのコードは、より多くの上位互換性作るには? support-v4
ライブラリ(V23以上)から
よろしく
Android-Mの新しい実行時アクセス権が最低23のAPIレベルを要求していますが、私のプロジェクトでは最低16のAPIレベルが必要です。最低SDK <23でcheckSelfPermissionを設定することはできますか?
だから、どのようにこのコードは、より多くの上位互換性作るには? support-v4
ライブラリ(V23以上)から
よろしく
Use ContextCompat.checkSelfPermission()
、ActivityCompat.requestPermissions()
、及びActivityCompat.shouldShowPermissionRequestRationale()
、。これらは下位互換性があります。 Androidの古いバージョンを使用している場合は、「正しいことを行います」(の場合はPackageManager.PERMISSION_GRANTED
を返します)。
ビルドバージョンif(Build.Version.SDK_INT >= Build.VERSION_CODES.MARSHMALLOW)
を確認できます。そして、そこではmarshmallow権限を扱い、そうでなければ他のバージョンを扱います。
ちょうどあなたの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
}
を道がここに https://codemammoth.blogspot.gr/2016/06/how-to-invoke-checkselfpermission.html
記述されているAppCompatActivityを使用したいあなたがメソッドを呼び出す必要があり:)
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;
}
感謝を使用していません!サポートライブラリv4は良い判断です。 – Ardi
はい、常にv23より前にPERMISSION_GRANTEDを返します – weigan
サポートv4も使用し、ContextCompat.checkSelfPermission(this、Manifest.permission.READ_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTEDはアンドロイド2.3.3でHTC Incredibleでfalseを返します。どんな考え? – Anonymous