web-dev-qa-db-ja.com

外部ストレージの読み取りおよび書き込み権限が機能していない

私のアプリでは、外部ストレージのデータを読み書きするユーザー権限を取得したいので、以下のようにマニフェストに権限タグを配置しました。しかし、アプリをインストールするか、実行していて、ストレージへの読み取りまたは書き込みが必要な場所では、ユーザーから許可が取得されず、メモリの読み取りと書き込みは、setting-app-accessに手動で移動してメモリへのアクセスを有効にするまで機能しません。

私のマニフェストはこれです:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
   package="javadi60.saber.storeassistant">

   <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />

   <application
      Android:allowBackup="true"
      Android:dialogTheme="@style/CustomDialog"
      Android:icon="@mipmap/myappicon"
      Android:label="@string/app_name"
      Android:roundIcon="@mipmap/ic_launcher_round"
      Android:supportsRtl="true"
      Android:theme="@style/AppTheme">
      <activity Android:name=".MainActivity">
          <intent-filter>
              <action Android:name="Android.intent.action.MAIN" />
              <category Android:name="Android.intent.category.LAUNCHER" />
          </intent-filter>
      </activity>
      <activity Android:name=".insertData" />
      <activity Android:name=".setting" />
      <activity Android:name=".dellAll" />
      <activity Android:name=".reports" />
      <activity Android:name=".login" />
  </application>

</manifest>
9
saber javadi

それでも機能しない場合は、気の利いたプロジェクトをクリーンアップし、再ビルドして実行してください。

このコードをアクティビティのonCreateメソッドに追加します。アプリを削除し、プロジェクトをクリーンアップして、ビルドして実行します。また、マニフェストに必要な権限を追加することを忘れないでください。 (より低いAPIレベルの場合、コードは不要ですが、23以降ではこのコードも必要です)

private fun requestPermission() {

    val permissions = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE)
    this.requestPermissions(permissions, 5)
}
0
ovidiur