この投稿に続いて、他のアプリから (画像だけでなく、あらゆる種類の) ファイルを受信するようにアプリを登録しました。
回答されたソリューションを実装しましたが、データ ストリームの「ファイル名」を取得する方法が見つかりません。次のような Uri の例として:
content://downloads/all_downloads/5
ストリームを取得できますが、それを生成する元のファイルの名前については何も知りません。
それを取り戻す方法はありますか?
この投稿に続いて、他のアプリから (画像だけでなく、あらゆる種類の) ファイルを受信するようにアプリを登録しました。
回答されたソリューションを実装しましたが、データ ストリームの「ファイル名」を取得する方法が見つかりません。次のような Uri の例として:
content://downloads/all_downloads/5
ストリームを取得できますが、それを生成する元のファイルの名前については何も知りません。
それを取り戻す方法はありますか?
ほとんどの場合、これで問題が解決します。
Uri intentData = intent.getData();
if (intentData != null) {
String filePath;
if("content".equals(intent.getScheme()))
{
filePath = getFilePathFromContentUri(intentData);
}
else
{
filePath = intentData.getPath();
}
}
private String getFilePathFromContentUri(Uri selectedUri) {
String filePath;
String[] filePathColumn = {MediaColumns.DATA};
Cursor cursor = getContentResolver().query(selectedUri, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
filePath = cursor.getString(columnIndex);
cursor.close();
return filePath;
}
それを取得する方法はありますか?
一般的に、名前がない可能性があるため、一部にはファイルがない可能性があるため、いいえ。あなたは内容を得ることができるかもしれInputStream
ませんが、それはの後ろにファイルがあるという意味ではありませんInputStream
。
MediaStore
一部のデータに関連付けられたファイル名を特定しようとする特定のプロバイダー(たとえば)には、特定のハッキングが存在する可能性がありますがUri
、そのようなハッキングは信頼できない場合があります。