我想将图像分享到我的Facebook墙上,因为我正在从SD卡中获取图像然后分享, 我的代码:
String dirpath = android.os.Environment.getExternalStorageDirectory().toString();
String path = dirpath+"/test.png";
Uri imageUri = Uri.parse(path);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sharingIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
sharingIntent.setType("image/png");
startActivity(Intent.createChooser(sharingIntent , "Send image using.."));
但它不起作用,请给我一些解决方案。
此外,我想要使用Facebook SDK分享图像的代码..
答案 0 :(得分:3)
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) {
}
}
答案 1 :(得分:1)
这是我的问题
你用过
Intent.FLAG_ACTIVITY_NEW_TASK
所以这意味着你没有活动
你的错误是:
android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?
你应该成为全球类 那是什么?
创建类,例如它的名字是G.java
公共类G扩展Application { }
扩展应用
并在“ AndroidManifest.xml ”
中定义它 <application
android:name=".G"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
并创建:
public static Activity currentActivity;
“ currentActivity ”是可变保存当前活动
在您的活动的onResume事件中写道:
G.currentActivity = this;
super.onResume();
注意:它必须放在之前 super.onresume();
所以在你的代码中使用:
G.currentActivity.startActivity(Intent.createChooser(sharingIntent, "Share via..."));
G.currentActivity.
之前使用过:
startActivity(Intent);