java.lang.RuntimeException的与Facebook登录的例子 [英] java.lang.RuntimeException with Facebook Login example
问题描述
我下面的 Facebook的指南做一个登录应用程序Android系统。后:
- 虚拟设备上安装Facebook应用程序(不必要的)
- 导入Facebook的SDK到Android的Studio作为模块
- 导入previous模块到项目和
- 修改code为先导说
该项目编译。但是,当我运行的机器,并尝试打开该应用程序会崩溃显示:
不幸的是,该应用程序已经停止。
我使用的是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密钥散列后,注册您的应用程序。当你这样做了,打开你的AndroidManifest.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:
- Install Facebook app (unnecessary) on the virtual device
- Import Facebook SDK into Android Studio as Module
- Import the previous module into the project and
- 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屋!