Android M,不是每次启动都询问存储权限

Android M, not ask every start for storage permission

我的应用程序需要几乎每个 activity 访问用户的存储空间。如何在不让应用程序在每次应用程序启动时询问使用新的 Android M 权限模型访问它的权限的情况下访问存储? (读写)

谢谢!

如果您不想提示用户 "on every app startup to give memory access to be able to do anything",则不要这样做。仅在 checkSelfPermission() returns PERMISSION_DENIED.

时调用 requestPermissions()
@Override
public void onCreate(Bundle icicle) {
  if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)==
    PackageManager.PERMISSION_GRANTED) {
    init();
  }
  else {
    requestPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
      REQUEST_STORAGE);
  }
}

(显示了本机 API 级别 23 方法;您可能希望使用 ContextCompat andActivityCompat` 实现向后兼容性)

或者,如果用户在 UI 中做了一些需要 WRITE_EXTERNAL_STORAGE 的积极事情(例如,单击操作栏项目)并且您还没有许可。