我允许用户在他们的[朋友&用户]使用单个静态图像沿着墙,对于该图像我正在使用 Web Image URL
但现在我希望允许用户从多个图像中选择任何单个图像,例如存储在 SDCard 中特定文件夹中的10个图像,然后发布墙上。
所以这是我的问题,怎么做?
我现有的代码在墙上发布静态图片,请阅读以下内容:
@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卡从我的SD卡路径中选择多个图像中的图像喜欢: / sdcard / FbImages /
现在我想知道如何在上面的屏幕中放置按钮[因为我没有使用任何自定义xml,这是FacebookSDK中的原生功能]
所以这是我的问题如何打开sdcard文件夹以及如何选择单个图像从多个图像发布
答案 0 :(得分:1)
你必须找到该图像的路径。
尝试按照代码选择图片
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);
}
});
获取所选图像的路径
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);
}
然后使用
params.putString("picture",selectedImagePath);
答案 1 :(得分:0)
感谢您在此通知我。正如您所见here,我正在向我的Facebook好友发送应用请求。然而,它并不像是在朋友的墙上张贴照片。在那里你只能用网址ASK发布App图标。
如果您想在朋友墙上张贴照片,请查看我的以下答案。
Bundle param = new Bundle();
param.putString("message", "picture caption");
param.putByteArray("picture", ImageBytes);
mAsyncRunner.request("me/photos", param, "POST", new SampleUploadListener());
在上面的代码中,ImageBytes是Image的byte []。你必须玩一点来从perticular文件夹中选择图像然后将选择的图像转换为byte []。在上面的代码中使用那个byte []。
希望它会帮助你。
享受编码......:)
答案 2 :(得分:0)
use it when pick bitmap from sdcard and give the path also
past this code.
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) {
}
}