22

キャッシュ ディレクトリで画像ファイルを共有しようとしています。完全なパスがありますが、添付ファイルでファイルを送信できません。コードは次のとおりです。

File shareImage=Utils.getBitmapFile();
Log.d("Activity", "get final path in result"+shareImage.getAbsolutePath());
/*MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext=shareImage.getName().substring(shareImage.getName().lastIndexOf(".")+1);
String type = mime.getMimeTypeFromExtension(ext);
shareIntent.setType(type);
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
Uri shareImageUri = Uri.fromFile(shareImage);
Uri shareImageUri = Uri.fromParts("content", shareImage.getAbsolutePath(), null);//("content://"+shareImage.getAbsolutePath()); 
*/


Uri shareImageUri = Uri.fromFile(shareImage);
Log.d("Result ","uri is "+shareImageUri.toString());
shareIntent.putExtra(Intent.EXTRA_STREAM, shareImageUri);
startActivity(Intent.createChooser(shareIntent, "Share Results"));

上記のコメントされたコードが機能していません

送信メールには添付ファイルが表示されますが、受信側には添付ファイルがありません。Facebook 共有も投稿に画像が表示されません

この理由は何ですか??

私はすでに次のSO Links how-to-use-share-image-using-sharing-intent-to-share-images-in-androidおよび他の多くを見てきましたが、どれも問題を解決できません

PS;

1.目的は、画面のスクリーンショットを撮り、キャッシュディレクトリに保存し、そこからオンラインで共有することです

2.はい、ファイルがあります。デバイスから DDMS 経由でプルして、システムで確認できます。

4

3 に答える 3

0

次の手順でキャッシュされた画像を共有します。

1.キャッシュされたイメージをターゲット パスにコピーします。

public static File copyImage(String sourcePath, String targetPath){
        try {
               InputStream in = new FileInputStream(sourcePath);
               OutputStream out = new FileOutputStream(targetPath);
               バイト[] buf = 新しいバイト[1024];
               int レン;
               while ((len = in.read(buf)) > 0) {
                      out.write(buf, 0, len);
               閉じる
               ();
               out.close();
               新しいファイル (targetPath) を返します。
          } キャッチ (IOException e) {
               e.printStackTrace();
               null を返します。
          }
  }

2.コピーファイルのUriを取得します。

Uri uri = Uri.fromFile(対象);

3.インテントによる画像共有

    File dir = new File(Constant.INKPIC_PATH);//your custom path,such as /mnt/sdcard/Pictures
    if(!dir.exists()){
        dir.mkdirs();
    }
    File f = new File(dir,"temporary_file.jpg");
    File target = copyImage(url,f.getAbsolutePath());
    Uri uri = Uri.fromFile(target);
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_STREAM,uri );
    context.startActivity(intent);
于 2015-08-17T08:13:37.290 に答える