5

Nexus 7 タブレットで、Android のデフォルトの画像ビューアを使用して、内部フォルダから画像を開きたいと考えています。以下のコードを使用しているのですが、なぜか画像が表示されません。私が間違っていることは何ですか?ファイルへのパスは次のとおりです。

file:///data/data/com.example.denandroidapp/files/Attachments/photoTemp/photo.jpg

(これは Uri.parse("file://" + file) が返すものです)。

ArticlePhoto photo =  new ArticlePhoto(soapObject);
File f = new File(context.getFilesDir() + "/Attachments/photoTemp");

if(!f.exists())
    f.mkdirs();

if (photo.ArtPhoto != null) {
    Bitmap articlePhoto = BitmapFactory.decodeByteArray(photo.ArtPhoto, 0, photo.ArtPhoto.length);                      
    ByteArrayOutputStream  bytesFile  =  new ByteArrayOutputStream();
    articlePhoto.compress(Bitmap.CompressFormat.JPEG, 100, bytesFile);

    File file = new File(f + "/photo.jpeg");

    try {
        if(!file.exists())
            file.createNewFile();

        FileOutputStream outStream =  new FileOutputStream(file);

        outStream.write(bytesFile.toByteArray());                  
        outStream.close();

        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse("file://" + file),"image/jpeg"); 
        startActivity(intent);

    } catch(Exception ex) {
        AlertDialog alert =  new  AlertDialog.Builder(context).create();
        alert.setTitle("Warning!");
        alert.setMessage(ex.getMessage());
        alert.show();
    }
}
4

7 に答える 7

6

これを試してください:

    Intent intent = new Intent();  
    intent.setAction(android.content.Intent.ACTION_VIEW);
    Uri uri = Uri.parse("file://" + file.getAbsolutePath());                 
    intent.setDataAndType(uri,"image/*");
    startActivity(intent);

ありがとう。

于 2013-01-23T17:10:59.780 に答える
3

問題は、画像がアプリケーションの内部にあることです! したがって、外部アプリケーション (イメージ ビューアー) は、アプリケーション内部のデータにアクセスできません。

あなたがしなければならないことは、 Content Provider を作成することです。 http://web.archive.org/web/20111020204554/http://www.marcofaion.it/?p=7

Android Manifest.xml

<provider android:authorities="com.example.denandroidapp" android:enabled="true" android:exported="true" android:name=<fully classified name of provider class>>
</provider>

意図の作成

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);

Uri uri = Uri.parse("content://com.example.denandroidapp/" + filename);
intent.setDataAndType(uri, "image/jpeg");
于 2015-08-05T06:13:13.147 に答える
1
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
 intent.setDataAndType(Uri.fromFile(new File(outputFileName)),"image/jpeg");
 startActivity(intent);
于 2013-01-23T14:07:28.933 に答える