1

ユーザーが [Friend & User] Wall に単一の静止画像とともにメッセージを投稿できるようにしています。その画像には、 Web Image URLを使用しています。

しかし、今では、 SDCardの特定のフォルダに保存されている 10 個の画像など、複数の画像から任意の 1 つの画像を選択して、Wallに投稿できるようにしたいと考えています。

だからここに私の質問があります、どうすればいいですか?

Wall に静止画像を投稿する既存のコード、以下をお読みください:

@Override
public void onClick(DialogInterface dialog, int which) {

        Bundle params = new Bundle();
            params.putString("to", String.valueOf(friendId));
        params.putString("caption", getString(R.string.app_name));
        params.putString("description", getString(R.string.app_desc));
        params.putString("link", "http://www.google.com");
            params.putString("picture",FacebookUtility.HACK_ICON_URL);
            params.putString("name",getString(R.string.app_action));

            FacebookUtility.facebook.dialog(FriendsList.this,
           "feed", params, (DialogListener) new PostDialogListener());
      }
  }).setNegativeButton(R.string.no, null).show();
 } catch (JSONException e) {
      showToast("Error: " + e.getMessage());
}

FacebookUtility.java:-

public static final String HACK_ICON_URL = "http://2.bp.blogspot.com/-WuasmTMjMA4/TY0SS4TzIMI/AAAAAAAAFB4/6alyfOzWsqM/s320/flowers-wallpapers-love-blooms-roses-bunch-of-flowers.jpg";

アプリの既存の画面を確認し、

ここに画像の説明を入力

上の画面でわかるように、上に書いたように単一の静止画像のみを表示していますが、SD カードを使用して複数の画像から画像を選択できるようにしたいのですが、私の SDCard パスは次のようになります: /sdcard/FbImages/

上の画面にボタンを配置する方法を知りたい [これにはカスタム xml を使用していないため、これは FacebookSDK のネイティブ機能です]

SDカードフォルダーを開く方法と、複数の画像から投稿する単一の画像を選択する方法についての質問です

4

3 に答える 3

1

you have to find path for that image.

try following code to select image

btnSelect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             Intent intent = new Intent();
             intent.setType("image/*");
             intent.setAction(Intent.ACTION_GET_CONTENT);
             startActivityForResult(Intent.createChooser(intent,"Select Picture"), 0);
        }
    });

get path for selectd image

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == 0) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);

        }
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

then use

  params.putString("picture",selectedImagePath);
于 2013-09-06T12:12:47.043 に答える
0

ここで答えを教えてくれてありがとう。ここで見たように、Facebook の友達にアプリのリクエストを送信しています。しかし、友達のウォールに写真を投稿するのは好きではありません。そこでは、URL ASKを使用してアプリアイコンのみを投稿できます.

フレンズウォールに写真をメッセージ付きで投稿したい場合は、以下の回答を確認してください。

Bundle param = new Bundle();
param.putString("message", "picture caption");
param.putByteArray("picture", ImageBytes);
mAsyncRunner.request("me/photos", param, "POST", new SampleUploadListener());

上記のコードでは、ImageBytes はイメージの byte[] です。特定のフォルダから画像を選択し、選択した画像をバイト[]に変換するには、少し遊ぶ必要があります。上記のコードでその byte[] を使用します。

于 2013-09-09T05:59:51.767 に答える
0

SD カードからビットマップを選択するときに使用し、このコードを過ぎたパスも指定します。

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);
            share.setType("image/jpeg");
            List<ResolveInfo> resInfo = getPackageManager()
                    .queryIntentActivities(share, 0);
            if (!resInfo.isEmpty()) {
                for (ResolveInfo info : resInfo) {
                    Intent targetedShare = new Intent(
                            android.content.Intent.ACTION_SEND);
                    targetedShare.setType("image/jpeg"); // 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);
                        targetedShare.putExtra(Intent.EXTRA_STREAM,
                                Uri.fromFile(new File(imagePath)));
                        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) {
        }

    }
于 2013-09-09T06:58:57.070 に答える