Facebook 登录后调用新活动 |安卓

2024-02-03

我的 Android 应用程序中有 2 个活动。在第一个中,我要求用户使用 facebook 登录。用户登录后,我收集用户数据,例如电子邮件、姓名,并调用一个新活动,将这些参数传递给它。下面是我的facebook授权方法:

 public void loginFB(final View v)
    {           
        facebook.authorize(this, new String[] { "email", "read_stream" }, new DialogListener() {

            @Override
            public void onComplete(Bundle values) {
                this.getlogininfo(v);
            }
            private void getlogininfo(View v) {
                // TODO Auto-generated method stub
                logininfo(v);                   
            }

            @Override
            public void onFacebookError(FacebookError error) {}

            @Override
            public void onError(DialogError e) {}

            @Override
            public void onCancel() {}
     });            
    }

下面是我的logininfo()方法:

public void logininfo(final View v){
    mAsyncRunner.request("me", new RequestListener(){    
        @Override
        public void onComplete(String response, Object state) {
            try{
                Log.d("Profile", response.toString());
                JSONObject json = Util.parseJson(response);
                final String fname1 = json.getString("first_name");
                final String lname1 = json.getString("last_name");
                final String email = json.getString("email");

                Intent fbLogged = new Intent();
                Bundle passData = new Bundle();
                passData.putString("fname", fname1);
                passData.putString("lname", lname1);
                passData.putString("email", email);
                fbLogged.putExtras(passData);
                fbLogged.setClass(v.getContext(), RequestFb.class);
                startActivity(fbLogged);    
            }
            catch(JSONException e){
                Log.w("This", "eror");
            }               
        }    
        @Override
        public void onIOException(IOException e, Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
            // TODO Auto-generated method stub

        }           
    });
  }     

所以,我的新活动开始于OnComplete()获取用户数据。

这工作得很好,但是当用户单击“登录”并使用 facebook 登录时,第一个活动页面会在屏幕上保留几秒钟,然后调用下一个活动。有一个滞后。如何解决延迟问题?当用户单击登录并授权登录后,应该将用户直接带到第二个活动。有什么建议么?

Thanks!


很简单,您在新线程中运行 fb 图形请求(使用异步运行器)但只有当该请求完成时,您才开始新的活动,这就是您得到“滞后”的原因。

您应该在新活动而不是第一个活动中运行图形请求,如下所示:

public void loginFB(final View v) {
    facebook.authorize(this, new String[] { "email", "read_stream" }, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {
            Intent fbLogged = new Intent(v.getContext(), RequestFb.class);
            startActivity(fbLogged);
        }

        @Override
        public void onFacebookError(FacebookError error) {}

        @Override
        public void onError(DialogError e) {}

        @Override
        public void onCancel() {}
    });
}

public class RequestFb extend Activity {
    protected void onCreate(Bundle savedInstanceState) {
        Facebook facebook = new Facebook("YOUR_APP_ID");
        AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(facebook);

        asyncRunner.request("me", new RequestListener(){
            try {
                final JSONObject json = Util.parseJson(response);
                final String fname1 = json.getString("first_name");
                final String lname1 = json.getString("last_name");
                final String email = json.getString("email");

                runOnUiThread(new Runnable() {
                    public void run() {
                        // use the data
                    }
                });
            }
            catch(JSONException e) {
                Log.w("This", "eror");
            }
        });

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook 登录后调用新活动 |安卓 的相关文章

  • 如何列出我的应用程序以供下载文件?

    我想通过我的应用程序从浏览器下载文件 我正在尝试将我的应用程序列在complete action using对话 它显示其他操作 例如查看文件等 但在下载文件的情况下 它不会显示在对话框中 我怎样才能像图片中那样列出我的应用程序 我在我的活
  • 使用 Android/Firebase 实时数据库时,Single.Create()...blockingGet() 在 RxJava 2.1.3 中挂起

    当使用以下模式从Firebase实时数据库同步获取数据时 String s Single create new SingleOnSubscribe
  • 围绕二维坐标系中的特定点缩放

    Below is an image my coordinate system 我想做的是 我想开始围绕画布中的特定点进行缩放 缩放工作正常 但我的问题是我不知道如何计算缩放时移动画布的量 请注意 我我没有使用canvas scale 我只是
  • Android Studio:无法终止 xxx 的现有进程

    The application is a system application and it will be started by other applications When I install the application from
  • Android,如何限制TextView的宽度(并在文本末尾添加三个点)?

    我有一个TextView我想限制它的字符 实际上 我可以做到这一点 但我正在寻找的是如何在字符串末尾添加三个点 这表明文本已经继续 这是我的 XML 但没有点 尽管它限制了我的文本
  • Kotlin - 即使有 init() 函数,属性也必须初始化或者是抽象的

    我已使用 Android Studio 3 0 将此代码从 Java 转换为 Kotlin internal var background Drawable internal var xMark Drawable private fun i
  • 请求超级用户权限编辑文件

    我正在规划一个需要编辑系统文件的应用程序 我只能使用 root 权限编辑该文件 我有一个已 root 且安装了 Superuser apk 的开发手机 其他需要 root 的应用程序会在首次启动时请求 root 访问权限 我想做同样的事情
  • 使用 Gradle 进行 Travis-CI Android 测试总是超时

    我正在尝试在 Travis CI 上构建和测试我的项目 它每次都会在我的所有存储库上向我显示相同的重复输出 这是我的 travis ymlhttps github com carts uiet cartsbusboarding blob m
  • 防止 FragmentPagerAdapter 中的 WebView 重新加载?

    我有一个 FragmentPagerAdapter 用于显示大约 6 个选项卡 所有选项卡都从 Web 服务器加载数据 其中一个选项卡包含一个从我的服务器加载图像的 WebView 生成图像的服务器端成本很高 因此我想减少重新加载 WebV
  • 屏幕滚动时 GridView 内的项目会重复

    我使用 GridView 来显示一组用户可以选择的类别 网格的每个项目都由一个 ImageView 和一个 TextView 组成 两者都是从服务器检索的 当触摸一个项目时 另一个活动就会启动 我以为一切都很顺利 直到我注意到当我滚动屏幕时
  • 输入连接-如何删除选定的文本?

    我为 Android 制作了一个自定义键盘 当我按下键盘的退格按钮时 我使用 getCurrentInputConnection deleteSurroundingText 1 0 从输入字段中删除一个字母 但是 当我选择一些文本然后按退格
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • Android系统每个应用程序的通知限制

    这可能偏离主题 但我找不到任何相关内容 Android应用程序可以显示的通知数量有限制吗 我在收到 100 条通知后遇到问题 没有文件明确说明这一点 注意 显示 100 条通知并不是一个好主意 但由于某些原因这是必需的 In API23 包
  • eclipse - 在android虚拟设备中卡住中文

    当我在 Eclipse 中运行 Android 模拟器时 当我尝试编写文本时 所有键盘字符都会被翻译为中文 为什么是这样 Thanks 点击并按住EditText Select 输入法 Select 安卓键盘
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • Webview 电子邮件链接 (mailto)

    我有一个视图并查看该网站有用于发送电子邮件的 malito 代码 当我打开链接时 会出现错误 我希望当我打开链接时打开 Gmail 应用程序或其他电子邮件应用程序 感谢所有帮助者 public class teacher extends A
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • 停止前台运行的服务的正确方法是什么

    我正在尝试停止作为前台服务运行的服务 当前的问题是当我打电话时stopService 通知仍然保留 因此 在我的解决方案中 我添加了一个接收器 我正在将其注册到onCreate 在 的里面onReceive 我调用的方法stopforegr
  • Google Cloud Messaging - 立即收到或长时间延迟收到的消息

    我在大学最后一年的项目中使用谷歌云消息传递 一切正常 但我在使用 GCM 时遇到了一些麻烦 通常 消息要么几乎立即传递 要么有很大的延迟 我读过这篇文章 但我真的认为它不适用于这种情况 GCM 通常会在消息发送后立即传送消息 然而 这并不总
  • Fragment 的 onSaveInstanceState() 永远不会被调用

    我试图将数据保存在片段的 onSaveInstanceState 中 但该方法从未被调用 有人可以帮忙吗 public class MyFragment extends Fragment Override public View onCre

随机推荐

  • 如何使用 MongoDB 搜索文档中所有字段的单词或字符串?

    我们遇到的情况是 用户希望有一个 多功能框 来搜索文档中任何位置的单词 短语 MongoDB 是否能够执行此搜索 还是必须对每个字段进行显式搜索 你需要创建一个通配符文本索引 https docs mongodb org manual co
  • 相当于 PowerShell 中的 Bash 别名

    PowerShell 新手问题 我想在 PowerShell 中创建一个与此 Bash 别名完全相同的别名 alias django admin jy jython path to jython dev dist bin django ad
  • 使用一个字段创建 Ada 记录

    我定义了一个类型 type Foo is record bar Positive end record 我想创建一个返回记录实例的函数 function get foo return Foo is return 1 end get foo
  • 当为自动模拟设置自定义 AutoDataAttribute 时,告诉 AutoFixture 忽略所有递归结构的正确语法是什么?

    我让 xUnit Moq AutoFixture 成功地协同工作 以便我可以通过测试方法输入参数自动模拟对象 我创建了一个自定义 AutoMoqData 我在每次测试中使用的属性 这是该属性的代码 using System Linq usi
  • Android 谷歌加号登录按钮

    下列的谷歌签名按钮 https developers google com mobile android sign in 我在我的android设备上实现了它 单击该按钮时 它会显示一个弹出窗口 询问您的许可 了解您在 Google 上的身
  • 将图像上传到网络服务会导致图像损坏

    我正在尝试从 iPhone 将图像上传到网络服务 但即使文件已成功上传 也无法查看 jpg 它似乎已损坏 使用以下 c 代码可以成功上传文件并正常工作 var url http myurl co uk services service sv
  • 是否有类似于 XMLSpy 的带有网格视图的 XML 编辑器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我已经测试了一些不同的 xml 编辑器 查看器 但似乎找不到任何具有与 XMLSpy 的网格视图相媲美的
  • 使用 Rails 3 输出格式化的 json

    我使用rails 3 0 3 javascript 自动完成需要这样的数据 query Li suggestions Liberia Libyan Arab Jamahiriya Liechtenstein Lithuania data L
  • Golang 嵌入结构类型

    我有这些类型 type Value interface type NamedValue struct Name string Value Value type ErrorValue struct NamedValue Error error
  • Kotlin 如何与 Java 和 JavaScript 互操作?

    Kotlin 网站指出 Kotlin 与 Java 100 具有互操作性 Kotlin 是 Java 的子集 超集吗 另外 文档指出 Kotlin 与 JavaScript 兼容 那么它是如何编译以支持两者的呢 Kotlin 是像 Xama
  • 内循环 Lambda

    我在 for 循环中有一个 lambda 其中循环变量参数在 lambda 中 当我运行它时 我期望输出数字 0 9 但由于它是 lambda 因此 x 不会立即求值 for int x 0 x lt n x vec push back t
  • 如何解决java.io.InvalidClassException:本地类不兼容:流classdesc serialVersionUID [重复]

    这个问题在这里已经有答案了 我在这么大的项目中有一个可序列化的类 编码时没有指定serialVersionUID 并将其作为blob保存在MySQL数据库中 我必须向此类添加一些字段 但是执行此操作后 我收到如下异常 IOException
  • 文本装饰:下划线与边框底部

    使用上有什么区别 text decoration underline and border bottom 哪个易于设计且跨浏览器兼容 当我们应该使用border bottom over text decoration underline 用
  • 使用 Lua 表 C API 创建一个简单的表

    我正在运行一个 MySQL 查询 它总是返回 4 行 row gt name row gt date row gt ip row gt custom 我想要实现的是根据上述结果创建一个简单的表 因此它看起来像 name result of
  • 如何将信号作为函数参数传递?

    因此 我希望创建我们自己的通用继承复选框类 该类将能够在其构造函数中接受一些值 并弹出一个以我们需要的方式完全连接到我们的模型的小部件 目前我们在我们的视野范围内做这样的事情 connect checkboxWidget QCheckbox
  • 如何在android中使用intent发送.text文件?

    我正在使用下面的代码发送邮件 并且我需要仅使用 gmail 发送 text 文件 我该怎么做 请问有人可以帮助我吗 Intent send new Intent Intent ACTION SENDTO String uriText mai
  • 需要为 Yesod 路径定义哪些类型类?

    在我的应用程序中 我的数据模型有几个使用整数或字符串作为某些标识符的不同实例 为了安全起见 我将这些标识符包装到新类型声明中 如下所示 newtype DocId DocId Integer newtype GroupName GroupN
  • 在 Pixel 2 和 Pixel 2 XL 上接收 UDP 广播数据包

    我正在开发一个从 Wi Fi 摄像头接收 UDP 广播数据包的应用程序 在我发现 Google Pixel 2 Pixel 2 XL 接收 UDP 广播包有问题之前一直都很好 为了找出原因 我做了2个测试应用程序 一个是UPD广播发送器 h
  • Python - 作业 - 将任意基数转换为任意基数

    我正在尝试编写一个程序 将任何基数中的数字转换为用户选择的另一个基数 到目前为止我的代码是这样的 innitvar float raw input Please enter a number basevar int raw input Pl
  • Facebook 登录后调用新活动 |安卓

    我的 Android 应用程序中有 2 个活动 在第一个中 我要求用户使用 facebook 登录 用户登录后 我收集用户数据 例如电子邮件 姓名 并调用一个新活动 将这些参数传递给它 下面是我的facebook授权方法 public vo