0

次のようなインテントからファイルを受け取りました。

Uri incoming = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
File toStream = new File(incoming.getPath());

そこから読み取ることができず、toStream.canRead() は false を返します。

ギャラリー アプリの共有ボタンからこれを受け取りましたが、他のアプリはこのファイルを問題なく受け取っているようです。何か案は?

4

3 に答える 3

1

私は同じ問題を抱えていましたIntent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);。返されたパスは、「/document/primary:Download/ac」のようなものでした。そのパスで File オブジェクトを作成すると、exists()canRead()asが表示されましfalseた。私がしたことは、「:」の後のパス、つまり「Download/ac 」を取り、それを「 /storage/emulated/0/」とマージすることでした。したがって、最終的なパスは " /storage/emulated/0/Download/ac " です。内部ストレージで問題なく動作しました。

許可の問題のみの場合は、これを利用してください。

ActivityCompat.requestPermissions(MainActivity.this, new String[]{READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE},THIS_REQUEST_CODE);

これをオーバーライドします

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
} 
于 2016-10-22T19:17:26.830 に答える
0

アプリに権限を追加してみてくださいREAD_EXTERNAL_STORAGE

于 2013-08-02T07:55:36.633 に答える