2

この投稿に続いて、他のアプリから (画像だけでなく、あらゆる種類の) ファイルを受信するようにアプリを登録しました。

回答されたソリューションを実装しましたが、データ ストリームの「ファイル名」を取得する方法が見つかりません。次のような Uri の例として:

content://downloads/all_downloads/5

ストリームを取得できますが、それを生成する元のファイルの名前については何も知りません。

それを取り戻す方法はありますか?

4

3 に答える 3

4

ほとんどの場合、これで問題が解決します。

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;
}
于 2013-04-17T11:57:15.300 に答える
2

それを取得する方法はありますか?

一般的に、名前がない可能性があるため、一部にはファイルがない可能性があるため、いいえ。あなたは内容を得ることができるかもしれInputStreamませんが、それはの後ろにファイルがあるという意味ではありませんInputStream

MediaStore一部のデータに関連付けられたファイル名を特定しようとする特定のプロバイダー(たとえば)には、特定のハッキングが存在する可能性がありますがUri、そのようなハッキングは信頼できない場合があります。

于 2012-12-11T14:37:31.947 に答える