0

我有一个有两个按钮的活动

  1. 用于登录 facebook。登录后我完成了那个活动
  2. 其他按钮用于张贴到墙上

第一部分我做得很好,但第二部分我参考了 facebook 样本并尝试将发布权限添加到我的开放会话中,如下所示

private void performPublish(PendingAction action) {
    Session session = Session.getActiveSession();
    if (session != null) {
        pendingAction = action;
        if (hasPublishPermission()) {
            // We can do the action right away.
            handlePendingAction();
        } else {
            // We need to get new permissions, then complete the action when we get called back.
            session.requestNewPublishPermissions(new Session.NewPermissionsRequest(this, PERMISSIONS));
        }
    }
}

但我收到以下错误

    04-14 16:49:18.760: E/AndroidRuntime(2529): FATAL EXCEPTION: main
    04-14 16:49:18.760: E/AndroidRuntime(2529): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.smartcloud/com.smartcloud.HelloFacebookSampleActivity}: java.lang.UnsupportedOperationException: Session: an attempt was made to request new permissions for a session that has a pending request.
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.ActivityThread.access$1500(ActivityThread.java:122)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1005)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.os.Handler.dispatchMessage(Handler.java:99)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.os.Looper.loop(Looper.java:132)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.ActivityThread.main(ActivityThread.java:4028)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at java.lang.reflect.Method.invokeNative(Native Method)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at java.lang.reflect.Method.invoke(Method.java:491)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at dalvik.system.NativeStart.main(Native Method)
    04-14 16:49:18.760: E/AndroidRuntime(2529): Caused by: java.lang.UnsupportedOperationException: Session: an attempt was made to request new permissions for a session that has a pending request.
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.facebook.Session.requestNewPermissions(Session.java:968)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.facebook.Session.requestNewPublishPermissions(Session.java:501)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.smartcloud.HelloFacebookSampleActivity.performPublish(HelloFacebookSampleActivity.java:194)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.smartcloud.HelloFacebookSampleActivity.onClickPostStatusUpdate(HelloFacebookSampleActivity.java:161)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at com.smartcloud.HelloFacebookSampleActivity.onCreate(HelloFacebookSampleActivity.java:89)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)
    04-14 16:49:18.760: E/AndroidRuntime(2529):     ... 11 more

请帮帮我!它对我来说真的很重要

4

1 回答 1

0

session在请求新权限之前,您需要等到打开。您可以使用statusCallback并检查会话何时打开(在call方法中),然后请求新权限。

于 2013-04-14T12:18:40.313 回答