gpt4 book ai didi

android - Facebook 3.0 : How to detect user cancel the permission dialog on android

转载 作者:太空狗 更新时间:2023-10-29 13:30:57 25 4
gpt4 key购买 nike

我不知道如何检测用户是否取消了 Android 上的权限请求对话框。

有谁知道我需要调用什么函数来检查这个?

最佳答案

首先要做的是:这个问题有点老了,这个答案假定您使用的是更新的版本(我目前使用的是 3.7)。使用 3.0 版本的 SDK 可能可以做到这一点,但您应该尝试将您在项目中使用的 Facebook SDK 更新为更新版本,因为它们自 3.0 以来添加了很多功能和修复。

我正在使用 Session.StatusCallback 来监听 Session 生命周期更改,我将其注册到 UiLifecycleHelper 以提供更新我的 Activity 。

UiLifecycleHelper 将在用户完成与权限对话框的交互时触发更新,调用您的 Session.StatusCallback.call(Session, SessionState, Exception) 方法您的 Session.StatusCallback 实例已注册。为了检测用户取消权限请求,您可以处理传递给此方法的Exception

在我的代码中,我在发帖时是这样做的,但是读取权限请求应该是类似的:

@Override
public void call(Session session, SessionState state,Exception exception)
{
if(exception != null)
{
if(exception instanceof FacebookOperationCanceledException)
{
//make sure we don't continue posting
posting = false;
//the user cancelled it, no need to show a message or do anything
return;
}
else if(exception instanceof FacebookAuthorizationException)
{
Toast.makeText(FacebookActivity.this, "Failed to obtain Facebook permission to post on your behalf", Toast.LENGTH_LONG).show();
//don't continue posting, let the user retry it if he/she wants to
posting = false;
return;
}
}

//continue with checking that all permissions have been granted and post the action
}

我在 this question 的答案中找到了信息,但我处理 FacebookAuthorizationException 的方式不同。

此外,如果您在发布或使用其他扩展权限时恢复 Session,我发现检查 SDK 给出的结果很有用,因为用户可能已经从其他地方取消了权限,例如 Facebook 网站。当后者发生时,您在应用程序中的 Session 对象将表明它仍然拥有该权限(例如 publish_actions),而实际上它不再具有该权限.当 Session 对象被缓存并且其中的数据不新鲜时,就会发生这种情况。

这就是我正在做的检查权限是否丢失(即它已从其他地方而不是从应用程序中删除):

//note:
//I'm returning null further down the line because
//this code is run in an AsyncTask<Void,Void,Void>

Request request = new Request(
session,
graphPath,
params,
HttpMethod.POST);
Response response = request.executeAndWait();
GraphObject responseObject = response.getGraphObject();

if(responseObject == null)
{
FacebookRequestError fbre = response.getError();
if((fbre!=null) && (fbre.getCategory() == Category.PERMISSION))
{
requestFacebookPermissions(session);
return null;
}
else
{
postFailed();
return null;
}
}

关于android - Facebook 3.0 : How to detect user cancel the permission dialog on android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com