0

アプリで複数の写真を共有したい。Facebook グラフ API を使用して 1 枚の写真をアップロードできますが、複数の写真を共有するにはどうすればよいですか

ありがとう。

4

2 に答える 2

1

Android は、複数の画像や写真、またはその他のメディア タイプを選択するためのすぐに使える Intentを提供しません。ソース: https://stackoverflow.com/a/12919585/450534 (そして、誰かがそれに異議を唱えない限り、私は通常、マーク・マーフィーの言葉を福音と見なします)

最も近いインテントはACTION_SEND_MULTIPLE.That です。ただし、これはオプションではありません。

Facebook が独自のモバイル アプリで行うのと同様のカスタム セレクターを作成する必要があります。

ここで、独自の複数画像セレクターを実装するための完全に機能する例を取得します。複数選択/

最後に、一度に複数の画像を Facebook にアップロードするには、Batch Requestsを送信する必要があります。

しかし、あなたが探しているものに対する既成の解決策は確かにありません。上記のすべてを組み合わせると、そうなります。しかし、私が恐れている簡単なことは何もありません。

于 2013-02-05T12:14:53.783 に答える
0

インテントを使用して、Facebook で複数の写真を共有することができました。変数「caminhos」は、共有したい画像のパスを持つ ArrayList < String > です。

protected void share(String nameApp, String imagePath, String text) {
// TODO Auto-generated method stub

try {
    List<Intent> targetedShareIntents = new ArrayList<Intent>();
    Intent share = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
    share.setType("image/jpeg");
    List<ResolveInfo> resInfo = getActivity().getPackageManager()
            .queryIntentActivities(share, 0);
    if (!resInfo.isEmpty()) {
        for (ResolveInfo info : resInfo) {
            Intent targetedShare = new Intent(
                    android.content.Intent.ACTION_SEND_MULTIPLE);
            targetedShare.setType("image/png"); // put here your mime
            // type
            if (info.activityInfo.packageName.toLowerCase().contains(
                    nameApp)
                    || info.activityInfo.name.toLowerCase().contains(
                            nameApp)) {
                targetedShare.putExtra(Intent.EXTRA_SUBJECT, text);
                targetedShare.putExtra(Intent.EXTRA_TEXT, text);
                ArrayList<Uri> files = new ArrayList<Uri>();
                for(int j= 0;j<caminhos.size();j++){
                    if(!caminhos.get(j).isEmpty()){
                        File file = new File(caminhos.get(j));
                        Uri uri = Uri.fromFile(file);
                        files.add(uri);
                    }
                }

                targetedShare.putParcelableArrayListExtra(Intent.EXTRA_STREAM,
                        files);
                targetedShare.setPackage(info.activityInfo.packageName);
                targetedShareIntents.add(targetedShare);
            }
        }
        Intent chooserIntent = Intent.createChooser(
                targetedShareIntents.remove(0), "Select app to share");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                targetedShareIntents.toArray(new Parcelable[] {}));
        startActivity(chooserIntent);
    }
} catch (Exception e) {
}

}

于 2014-05-13T21:05:59.117 に答える