2

外部ストレージに画像を保存するアプリがあります。これは、新しい M プレビューを試すまでうまく機能していました。

picasso (私は Ion も試しました) を使用して画像を読み込み、"file:///mnt/sdcard/ appname /image1.jpg" URI で画像を取得します。

エラーはまったく発生しませんが、M が外部ストレージから読み取る権限を変更したのではないかと推測しています。私はグーグルを試みましたが、私は空になります。

ちなみに、外部ストレージへの画像の書き込みは通常どおりに機能します。

4

2 に答える 2

1

siris_cac の回答は非常によく説明されていましたが、それが私の問題の原因ではありませんでした。「file:///mnt/sdcard/appname/image1.jpg」を使用して M の外部ストレージからファイルをロードできないことがわかりました。

http://www.androidpolice.com/2015/05/28/android-m-feature-spotlight-external-storage-can-be-adopted-as-true-internal-storageと何か関係があるのではないかと思います-or-accessed-normally-with-no-additional-apps/

画像をロードするときに Enviroment.getExternalStorageDirectory() を使用せず、保存するときにのみ最初から間違っていたと思います。

だから今私が使用する画像をロードするには:

"file:///" + Environment.getExternalStorageDirectory().getPath() + "/appname/image1.jpg";
于 2015-06-11T11:28:03.860 に答える
0

権限が次の方法で付与されているかどうかを確認してみてください。

checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);

を使用して、このようにランタイムでパーミッションをリクエストしてみてくださいrequestPermissions()

int EXT_PERMISSION = 1;
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);

そして、付与されたアクセス許可の結果を処理します

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case EXT_PERMISSION: {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
              //permission granted
            } else {
              //permission denied
            }
            break;
        }
    }
}
于 2015-06-01T08:06:49.327 に答える