写真を選択して「共有」します。ターゲットアプリケーションでは、意図とファイルパスからUriを取得します。 が開き失敗しました::EACCES(パーミッション拒否)Nexus 5、os M 6.0.1、およびCameraアプリで 'storage'の許可なしで共有ファイルにアクセスする方法
それが原因で許可されていない「ストレージ」の権限であるが、特に許可をユーザーに依頼したくない新しいFileInputStreamを(新しいファイル(pathToFile))を行うことがスロー 'storage'権限。 「保管」の許可なくファイルを読み取る別の方法はありますか?
if (Intent.ACTION_SEND.equals(action) &&
intent.hasExtra(Intent.EXTRA_STREAM)) {
Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
String filePath;
Cursor cursor = null;
final String column = "_data";
final String[] projection = { column };
try {
cursor = context.getContentResolver().query(uri, projection, null, null,
null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
filePath = cursor.getString(column_index);
}
} catch(Exception e){
return getFilePathFromInputStream(context, uri);
}
finally {
if (cursor != null)
cursor.close();
}
// upto here got filePath =
/storage/emulated/0/DCIM/Camera/IMG_20170326_184502.jpg
boolean b = false;
try{
File f2 = new File(filePath);
b = f2.exists();
} catch(Exception e) {
Log.e("+++ exception e:"+e.getMessage());
} catch(Error e) {
Log.e("+++ error e:"+e.getMessage());
}
// unto here no exception, then
fileInputStream = new FileInputStream(new File(filePath)); //<=== here throws
java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/IMG_20170326_184502.jpg: open failed: EACCES (Permission denied)
あなたが受け取った実際の「uri」は何ですか? – ianhanniballake