3

我在 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)
4

4 回答 4

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 包中选择正确的活动。

于 2013-02-19T07:02:10.380 回答
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);
于 2013-04-25T11:03:16.483 回答
0

是的...你应该com.facebook.katana.ShareLinkActivityAndroidManifest.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.

这将最终解决您的问题。

于 2013-01-30T12:33:29.733 回答
0

就这样我们都在同一个页面上。Facebook 故意打破了这一点,并拒绝修复它,并为此感到羞耻。

https://developers.facebook.com/bugs/332619626816423

于 2014-08-12T09:59:16.880 回答