私のアプリでは、外部のカメラアクティビティをデータ収集の一部として使用し、その結果のファイルパスのUri.toString()をモデルに保存して後で使用できます。Android:ファイルをuriまたはファイルパスでデコードするときにファイルが見つかりません
後でコレクションをリサイクラビューで表示すると、読み込まれた画像のサイズが原因でアプリケーションが遅くなるため、Googleのソリューションhereを実装しましたが、スタックトレースにFileNotFoundExceptions
が表示され、 tローディング。残りのビューはうまくロードされ、アプリケーションはクラッシュしません。
前述したように、uriString
は、content:foo/bar
という形式の文字列です。私は含むソリューションを試みました。
uri.toString
の代わりにfile.getabsolutePath()
をモデルに格納します。これはfile:/foo/bar
にuriString形式を変更し、まだuriString
から新しいFileオブジェクトを作成し、getAbsolutePath()
を呼び出し、それからgetPath()
Uri.parse(uriString).getPath()
- を呼び出す
- を動作しません。
明確にするには、imageView.setImageURI(Uri.parse(this.item.getPhotoURI()));
を呼び出してください。したがってファイルが存在し、uriStringはAndroidによって解釈されます。問題の機能は以下の通りです。私のスタックトレースは下にあります。
private Bitmap decodeSampledBitmapFromFile(String uriString, int reqWidth, int reqHeight)
{
// First we do this just to check dimensions (apparently)
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(uriString, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// And then return with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeFile(uriString, options);
}
そして、私のスタックトレース:FOO /バー:
11-24 16:10:57.762 17199-17199/uk.mrshll.matt.accountabilityscrapbook E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: file:/storage/emulated/0/Android/data/uk.mrshll.matt.accountabilityscrapbook/files/Pictures/JPEG_20161124_160913_-1155698030.jpg: open failed: ENOENT (No such file or directory)
を使用してください。ファイル名が問題になることがあります。 JPEG_20161124_160913_-1155698030.jpg 11556 ... 0の開始前にダッシュが付いていることを確認し、ファイル名のどこにでもダッシュを使用しないようにしてください。 – MikeOscarEcho