以下に私のコードを示します。SD カードからユーザーが選択した PDF ドキュメントのファイル パスを取得する必要があります。問題は、URI.getPath() が以下を返すことです。
/file:///mnt/sdcard/my%20Report.pdf/my Report.pdf
正しい道は:
/sdcard/my Report.pdf
ご注意くださいstackoverflowで検索したところ、画像や動画のファイルパスを取得する例が見つかりました。PDFの場合にファイルパスを取得する方法の例はありません?
私のコード、すべてのコードではなく、PDF部分のみ:
public void openPDF(View v)
{
Intent intent = new Intent();
//intent.setType("pdf/*");
intent.setType("application/pdf");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Pdf"), SELECT_PDF_DIALOG);
}
public void onActivityResult(int requestCode, int resultCode, Intent result)
{
if (resultCode == RESULT_OK)
{
if (requestCode == SELECT_PDF_DIALOG)
{
Uri data = result.getData();
if(data.getLastPathSegment().endsWith("pdf"))
{
String pdfPath = data.getPath();
}
else
{
CommonMethods.ShowMessageBox(CraneTrackActivity.this, "Invalid file type");
}
}
}
}
URI から正しいパスを取得する方法を教えていただけませんか?
ベストアンサー1
File myFile = new File(uri.toString());
myFile.getAbsolutePath()
正しいパスを返すはずです
編集
@Tronが示唆したように、動作するコードは
File myFile = new File(uri.getPath());
myFile.getAbsolutePath()