3

こんにちは、画像を共有するための次のコードがあります。

// Share
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");

Uri uri = Uri.parse(getFilesDir() + File.separator + "myGoal.jpg");
        share.putExtra(Intent.EXTRA_STREAM, uri);

startActivity(Intent.createChooser(share, "Share Image"));

画像を Dropbox に共有することはできますが、Facebook オプションを選択すると、画像が添付されていない Facebook のステータス更新ダイアログが表示され、「テスト」でステータスを更新しようとしても機能しません。エラーなし。ただ機能していません。

Dropbox に適切にアップロードされ、画像を取り出して見ることができるので、画像ではないことはわかっています。

Facebook で動作させるには、別の方法で画像をインテントに添付する必要がありますか?

何か案は?物理デバイスでデバッグしています。

4

4 に答える 4

10

それで私は問題を理解しました。

getFilesDir()を使用して画像を内部ストレージに保存していました。これにより、画像がアプリのサンドボックスに配置され、他のアプリからアクセスできなくなりました。

コードを次のように置き換えました。

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                "/MyApp/";

File dir = new File(file_path);
dir.mkdirs();
File file = new File(dir, "myPic.png");
FileOutputStream fOut = new FileOutputStream(file);

screenshot.compress(Bitmap.CompressFormat.PNG, 100, fOut);

fOut.flush();
fOut.close();

// Share
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/png");

share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
share.putExtra(Intent.EXTRA_TEXT, "My Image");

startActivity(Intent.createChooser(share, "Share Image"));

今は完全に正常に動作します。

于 2012-09-21T06:23:59.283 に答える
0

外部ファイル書き込みを使用しないソリューションは次のとおりです。

Drawable mDrawable = myImageView1.getDrawable();
Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();
String path = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "Image I want to share", null);
Uri uri = Uri.parse(path);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share Image"));

この場合、私の画像は ImageView myImageView から取得されます。

于 2015-09-06T06:22:16.697 に答える
0

Facebook SDK を使用していない場合でも、アプリから Facebook に画像 (テキストではなく) を共有できます。

Uri.parse の代わりに Uri.fromFile を使用していることを確認してください。

使用しないでください: intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(pathToFile));

USE:intent.putExtra(Intent.EXTRA_STREAM、Uri.fromFile(新しいファイル(pathToFile)));

于 2015-07-06T17:33:57.710 に答える
0

Facebookに画像を投稿するために私が行ったことは、直接渡すのではなく、関数を作成して次のように書くことです:

 private void ShareWall(String message) {
        Bundle parameters = new Bundle();
                // share msg
        parameters.putString("message", message);
                // shre image which you have define above
        parameters.putString("picture", postImage);

        try {
            facebook.request("me");
            String response = facebook.request("me/feed", parameters, "POST");
            Log.d("response: ", response);
            if (response == null || response.equals("")) {
                response.equals("");
                showToast("No Response.");

            } else {
                showToast("Message has been posted to your walll!.");
            }
            finish();
        } catch (Exception e) {
            showToast("Message failed to posdt on wall.");
            e.printStackTrace();
            finish();
        }

    }

これがお役に立てば幸いです。

于 2012-09-21T05:29:17.410 に答える