Android Marshmallowでユーザ定義のカスタム実行時アクセス権をリクエストする方法について、誰かが洞察を伝えることができますか?私は読み取り権限を持っているカスタムコンテンツプロバイダと、カスタムコンテンツプロバイダを使ってデータにアクセスしようとしている別のアプリケーションに取り組んでいます。Android:実行時にカスタム権限を要求する
答えて
私は個人的には許可ライブラリを使用することをお勧めします。代わりに、大規模な定型コードの彼らが効果的になる傾向があり、コードは非常に正確である
それは私の作品。このPermissionsDispatcher
@RuntimePermissions
public class MainActivity extends AppCompatActivity {
//sepcify permissions here
@NeedsPermission(Manifest.permission.CAMERA)
void showCamera() {
//work after permission is granted
}
@OnShowRationale({Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS})
void showRationaleForCamera(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage(R.string.permission_camera_rationale)
.setPositiveButton(R.string.button_allow, (dialog, button) -> request.proceed())
.setNegativeButton(R.string.button_deny, (dialog, button) -> request.cancel())
.show();
}
@OnPermissionDenied({Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS})
void showDeniedForCamera() {
//works when permissions denied
Toast.makeText(this, R.string.permission_camera_denied, Toast.LENGTH_SHORT).show();
}
@OnNeverAskAgain({Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS})
void showNeverAskForCamera() {
Toast.makeText(this, R.string.permission_camera_neverask, Toast.LENGTH_SHORT).show();
}
}
この例をありがとう。カスタム定義のパーミッションを使用する方法の例をいくつか教えてください。 –
もしあなたがread_storageとカメラのような複数の権限を求めているのなら、私は答えを更新することができます。多くの許可を定義できます。 – Vicky
これらはすべて組み込み権限です。私は、ユーザーが許可を定義した例を探しています。ユーザーが定義したユーザー定義のカスタムアクセス権を処理する方法は? –
を参照してください。
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 1;
private boolean checkAndRequestPermissions() {
Context context=getApplicationContext();
int locationpermission = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
int readphonestatepermission = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE);
int permissionSendMessage = ContextCompat.checkSelfPermission(context,Manifest.permission.SEND_SMS);
int writepermission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE);
int readexternalstoragepermission = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE);
List<String> listPermissionsNeeded = new ArrayList<>();
if (locationpermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (readphonestatepermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
}
if (permissionSendMessage != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.SEND_SMS);
}
if (writepermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (readexternalstoragepermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
if (!listPermissionsNeeded.isEmpty()) {
requestPermissions(listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), REQUEST_ID_MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_ID_MULTIPLE_PERMISSIONS) {
if (grantResults.length > 0) {
for (int i = 0; i < permissions.length; i++) {
if (permissions[i].equals(Manifest.permission.ACCESS_FINE_LOCATION)) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Log.e("msg", "location granted");
}
} else if (permissions[i].equals(Manifest.permission.READ_PHONE_STATE)) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Log.e("msg", "read phone state granted");
}
} else if (permissions[i].equals(Manifest.permission.SEND_SMS)) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Log.e("msg", "sms granted");
}
}else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Log.e("msg", "write external granted");
}
}else if (permissions[i].equals(Manifest.permission.READ_EXTERNAL_STORAGE)) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Log.e("msg", "read external storage granted");
Toast.makeText(SplashActivity.this, "Please Restart the Application....... ", Toast.LENGTH_LONG).show();
}
}else if (permissions[i].equals(Manifest.permission.READ_LOGS)) {
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
Log.e("msg", "read logs granted");
}
}
}
}
}
}
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle v) {
// TODO Auto-generated method stub
super.onCreate(v);
setContentView(R.layout.activity_splash);
if (checkAndRequestPermissions()) {
Toast.makeText(MainActivity.this, "Granted all permissions", Toast.LENGTH_SHORT).show();
}
}
}
ありがとう@Amol。これは、組み込み権限の例です。ユーザー定義のアクセス許可を扱う例をいくつか教えてください。 –
ありがとうございます。これは@Amol –
- 1. 実行時に権限を要求するIonic
- 2. Android Marshmallowで実行時の権限チェック
- 3. Android Marshmelllowで複数の権限を同時に要求する方法
- 4. 実行時にプッシュ通知(GCM)権限が必要ですか?
- 5. 権限ASP.NET MVCで、実行時に
- 6. Apacheが他にフォルダの実行権限を要求する理由
- 7. 実行時に権限を正しく要求する方法は?アンドロイド・スタジオを使用してアプリケーションを作る
- 8. nativescript-android:「実行時にロケーションの権限をリクエストする」というコールバック
- 9. 実行時のアクセス権を要求した後にフラグメントが空白になる
- 10. Android - 実行時のパーミッションを要求する
- 11. 権限実行時にSYSTEM_ALERT_WINDOWにアクセスする方法は?
- 12. Android Appがプレイストアからインストールする際に権限を要求しない
- 13. 不要なアクセス権を求めるAndroid
- 14. 「タブ」権限を要求せずにコンテンツスクリプトと通信する
- 15. TYPO3 BEカスタム権限
- 16. SYSTEM_ALERT_WINDOW権限を要求した後にアプリに戻る
- 17. MySQLバックアップを実行する権限
- 18. root権限でスクリプトを実行する
- 19. Androidアプリキャッシュに必要なストレージ権限
- 20. Android 6の実行時にロケーション許可を要求する方法
- 21. 権限 - 実行時にMIUIを実行している電話機で、どのように要求し、変更しますか?
- 22. AWS LambdaのlistEventSourceMappingsに対する要求権限
- 23. publish_action権限を要求せずにFBSDK 3.22(iOS/Android)から共有
- 24. ファイルの実行権限
- 25. 権限を要求するとナビゲーションスタックが戻されます
- 26. 権限テーブルにカスタム権限を表示できません
- 27. アンインストール中に管理者権限を要求します
- 28. 権限を要求する際の問題Marshmallow
- 29. Androidのカスタムダイアログから実行時のアクセス権をリクエストする
- 30. スクリプトを実行する権限を制限する方法は?
私はすでに同様の質問に答えています。 [ここ](http://stackoverflow.com/a/40639430/3423932)を参照してください。 – muthuraj
これは古い問題ですが、カスタムアクセス許可の問題の「インストール順序依存関係」に遭遇しました。他のアプリケーションが別の開発者によって開発されたため、「署名」保護などの他のソリューションは使用できませんでした。システム権限と同じようにカスタム権限を要求することができますが、カスタム権限に権限グループと保護レベルが「危険」であることを確認する必要があります。これらの要件の両方を使用すると、システムは実行時許可要求を提供します。 – AChez9