我在Facebook上发布数据的功能有问题:
public void postData() {
try {
Intent i = new Intent(Intent.ACTION_SEND);
i.setClassName("com.facebook.katana",
"com.facebook.katana.ShareLinkActivity");
i.setType("text/*");
i.putExtra(android.content.Intent.EXTRA_TEXT, "http://sample_url.com");
startActivity(i);
} catch (Exception e) {
Intent i= new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://sample_url.com));
startActivity(i);
}
}
每当我收到有关活动com.facebook.katana.ShareLinkActivity无法运行的信息时,我应该将代码添加到Android清单中。 Facebook应用程序已安装在手机上。
在AndroidManifest.xml中:
<activity android:name="com.facebook.katana.ShareLinkActivity" >
</activity>
LogCat中的异常:
01-30 14:46:00.903: E/AndroidRuntime(11626): FATAL EXCEPTION: main
01-30 14:46:00.903: E/AndroidRuntime(11626): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.facebook.katana/com.facebook.katana.ShareLinkActivity}; have you declared this activity in your AndroidManifest.xml?
01-30 14:46:00.903: E/AndroidRuntime(11626): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1634)
01-30 14:46:00.903: E/AndroidRuntime(11626): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1510)
01-30 14:46:00.903: E/AndroidRuntime(11626): at android.app.Activity.startActivityFromChild(Activity.java:3531)
01-30 14:46:00.903: E/AndroidRuntime(11626): at android.app.Activity.startActivityForResult(Activity.java:3283)
01-30 14:46:00.903: E/AndroidRuntime(11626): at android.app.Activity.startActivity(Activity.java:3370)
答案 0 :(得分:10)
最后我得到了这段代码:
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Text...");
sharingIntent.setPackage("com.facebook.katana");
startActivity(sharingIntent);
要点是setPackage
和setType
- 现在Android从Facebook包中选择正确的活动。
答案 1 :(得分:1)
对于所有在这里使用appcelerator的人来说,它是如何运作的......
var intFB = Ti.Android.createIntent({
action : Ti.Android.ACTION_SEND,
packageName : "com.facebook.katana",
type : "text/plain"
});
intFB.putExtra(Ti.Android.EXTRA_TEXT, "http://www.google.com");
//facebook only supports LINKS(!!!)
Ti.Android.currentActivity.startActivity(intFB);
答案 2 :(得分:0)
是的......您应该在com.facebook.katana.ShareLinkActivity
文件中声明AndroidManifest.xml
。这应该做。
修改强>
O o ...问题在于setClassName
方法。替换以下行
i.setClassName("com.facebook.katana","com.facebook.katana.ShareLinkActivity");
这一个:
i.setClassName("com.facebook.katana","ShareLinkActivity");
由于方法中的第二个参数是className
,并且您还使用调试器无法找到的类名传递包名称。由于班级名称为ShareLinkActivity
而不是 com.facebook.katana.ShareLinkActivity
。
这最终将解决您的问题。
答案 3 :(得分:0)
就这样,我们都在同一页上。 Facebook故意破坏了这一点并拒绝修复它并因此而感到羞耻。