安卓Facebook分享:找不到活动

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);
    }
}

每次我得到的信息都是activity 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)

你找到任何解决方案了吗? - Anand Savjani
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);

主要点是setPackagesetType——现在Android从Facebook包中选择正确的活动。


@nickfox,你能描述一下哪里出了问题以及在控制台上看到了什么吗? - adruzh
Facebook应用程序中的文本框未填充。请参见:https://developers.facebook.com/bugs/332619626816423 - nickfox

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);

0

是的...你应该在AndroidManifest.xml文件中声明com.facebook.katana.ShareLinkActivity。这样就可以了。

编辑:

哦哦...问题出在setClassName方法上。请替换以下行:

  i.setClassName("com.facebook.katana","com.facebook.katana.ShareLinkActivity");

用这个:

   i.setClassName("com.facebook.katana","ShareLinkActivity");

作为方法的第二个参数,您还传递了包名和类名,但调试器无法找到它。类名是 ShareLinkActivity,而不是 com.facebook.katana.ShareLinkActivity。这将最终解决您的问题。

1
已经声明 - 问题仍然存在。 - sttooo
另外,这并没有帮助...我用setPackage替换了setClassName(当然是使用不同的参数),现在它可以工作了。无论如何,感谢你的帮助。 - sttooo

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接