java.lang.RuntimeException的与Facebook登录的例子 [英] java.lang.RuntimeException with Facebook Login example

查看:174
本文介绍了java.lang.RuntimeException的与Facebook登录的例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我下面的 Facebook的指南做一个登录应用程序Android系统。后:

  1. 虚拟设备上安装Facebook应用程序(不必要的)
  2. 导入Facebook的SDK到Android的Studio作为模块
  3. 导入previous模块到项目和
  4. 修改code为先导说

该项目编译。但是,当我运行的机器,并尝试打开该应用程序会崩溃显示:

  

不幸的是,该应用程序已经停止。

我无法找到一个解决办法后,读起来像和的this

我使用的是Android 0.5.8,甲骨文的JDK 7和API 16的目标最大

主要文件是 activity_main.xml ,的 MainActivity.java 和的 MainFragment.java

下面是最新的的logcat 的输出:

  3月五号至30日:15:54.127 647-664 / com.jdk8.minifacebookloginapp.app E / AndroidRuntime:致命异常:AsyncTask的#1
    java.lang.RuntimeException的:执行doInBackground时出错()
            在android.os.AsyncTask $ 3.done(AsyncTask.java:299)
            在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)
            在java.util.concurrent.FutureTask.setException(FutureTask.java:124)
            在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)
            在java.util.concurrent.FutureTask.run(FutureTask.java:137)
            在android.os.AsyncTask $ SerialExecutor $ 1.运行(AsyncTask.java:230)
            在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)
            在java.lang.Thread.run(Thread.java:856)
     显示java.lang.NullPointerException:产生的原因
            在java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781)
            在com.facebook.internal.Utility.queryAppSettings(Utility.java:372)
            在com.facebook.widget.LoginButton $ 1.doInBackground(LoginButton.java:676)
            在com.facebook.widget.LoginButton $ 1.doInBackground(LoginButton.java:673)
            在android.os.AsyncTask $ 2.call(AsyncTask.java:287)
            在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)
在java.util.concurrent.FutureTask.run(FutureTask.java:137)
在android.os.AsyncTask $ SerialExecutor $ 1.运行(AsyncTask.java:230)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)
在java.lang.Thread.run(Thread.java:856)
 

解决方案

这个问题不从code,但来自Facebook的SDK来了。您可以通过查看NullPointerException异常

顶告诉

 产生的原因:显示java.lang.NullPointerException
        在java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781)
        在com.facebook.internal.Utility.queryAppSettings(Utility.java:372)
 

错误最后两个触发线是从Facebook的SDK(com.facebook.internal)和你的java.util包中两者都不是从你的code。

要解决这个问题,你需要完成在Facebook的安装入门教程安卓哪里您生成一个Android密钥散列后,注册您的应用程序。当你这样做了,打开你的Andr​​oidManifest.xml并添加的元数据线

 <应用
    机器人:allowBackup =真
    机器人:图标=@可绘制/ ic_launcher
    机器人:标签=@字符串/ APP_NAME
    机器人:主题=@风格/ AppTheme>
    <元数据的android:NAME =com.facebook.sdk.ApplicationId机器人:值=@字符串/ APP_ID/>
    <活动
        机器人:名称=。MainActivity
        机器人:标签=@字符串/ APP_NAME>
        <意向滤光器>
            <作用机器人:名称=android.intent.action.MAIN/>

            <类机器人:名称=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
    < /活性GT;
< /用途>
 

添加您的APP_ID到的strings.xml文件(找到在设置页面中您的Facebook开发者帐户 应用程序ID是在你的Facebook开发者帐户。

一旦你做到了这一点,应该编译

I'm following the Facebook guide to make a login app for Android. After:

  1. Install Facebook app (unnecessary) on the virtual device
  2. Import Facebook SDK into Android Studio as Module
  3. Import the previous module into the project and
  4. Modify the code as the guide says

the project compiles. But when I run the machine and try to open the application it crash showing:

Unfortunately, the application has stopped.

I couldn't find a solution after read similar posts like this and this.

I'm using Android 0.5.8, Oracle JDK 7 and the API 16 as target, min and max.

The main files are activity_main.xml, MainActivity.java and MainFragment.java.

Here is the latest logcat output:

05-30 03:15:54.127      647-664/com.jdk8.minifacebookloginapp.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:299)
            at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:856)
     Caused by: java.lang.NullPointerException
            at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781)
            at com.facebook.internal.Utility.queryAppSettings(Utility.java:372)
            at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:676)
            at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:673)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:856)

解决方案

The problem is not coming from your code but from the facebook SDK. You can tell by looking at the top of the NullPointerException

Caused by: java.lang.NullPointerException
        at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781)
        at com.facebook.internal.Utility.queryAppSettings(Utility.java:372)

The error last two triggering lines are from the facebook sdk (com.facebook.internal) and your java.util package neither of which are from your code.

To fix this, you need to finish the setup in the facebook's getting started tutorial for android where you register your app after generating an android key hash. After you've done that, open your AndroidManifest.xml and add the meta-data line

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

Then add your app_id into the strings.xml file (found from the settings page in your facebook developer account The app id is on your facebook developer account.

Once you've done this it should compile

这篇关于java.lang.RuntimeException的与Facebook登录的例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆