- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
您好,我正在研究 facebook api。我已经阅读了 facebook 文档并按照其中的说明进行了编码。下面的代码在 android 2.1-3.2 中运行良好,但是在 android 4.0.4 中运行时出现错误 android.os.networkonmainthread。我不知道如何使用 AsynckTask 或线程(无痛线程)编写下面的代码。请这里的任何人建议我如何编码,以便它可以在所有版本的 android 上执行。这是我的代码。
public class Facebook4 extends Activity {
public static final String mAPP_ID = "222299217893177";
public Facebook mFacebook = new Facebook(mAPP_ID);
private static final String FACEBOOK_PERMISSION = "publish_stream";
private SharedPreferences mPrefs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_facebook4);
((ImageView)findViewById(R.id.facebookLogin)).setOnClickListener( loginButtonListener );
SessionStore.restore(mFacebook, this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
private OnClickListener loginButtonListener = new OnClickListener() {
public void onClick( View v ) {
if( !mFacebook.isSessionValid() ) {
Toast.makeText(Facebook4.this, "Authorizing", Toast.LENGTH_SHORT).show();
mFacebook.authorize(Facebook4.this, new String[] {FACEBOOK_PERMISSION},Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
//startActivity(new Intent(FacebookLogin.this,MainActivity.class));
}
else {
Toast.makeText( Facebook4.this, "Has valid session", Toast.LENGTH_SHORT).show();
try {
JSONObject json = Util.parseJson(mFacebook.request("me"));
String facebookID = json.getString("id");
String firstName = json.getString("first_name");
String lastName = json.getString("last_name");
Toast.makeText(Facebook4.this, "You already have a valid session, " + firstName + " " + lastName + ". No need to re-authorize.", Toast.LENGTH_SHORT).show();
}
catch( Exception error ) {
Toast.makeText( Facebook4.this, error.toString(), Toast.LENGTH_SHORT).show();
}
}
//startActivity(new Intent(FacebookLogin.this,MainActivity.class));
}
};
public final class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
try {
//The user has logged in, so now you can query and use their Facebook info
JSONObject json = Util.parseJson(mFacebook.request("me"));
Log.i("id", json.getString("id"));
Log.i("FirstName", json.getString("first_name"));
Log.i("lastname", json.getString("last_name"));
Log.i("email", json.getString("email"));
Log.i("Name", json.getString("name"));
Log.i("gender",json.getString("gender"));
SessionStore.save(mFacebook, Facebook4.this);
}
catch( Exception error ) {
Toast.makeText( Facebook4.this, error.toString(), Toast.LENGTH_SHORT).show();
Log.i("error", error.toString());
}
}
public void onFacebookError(FacebookError error) {
Toast.makeText( Facebook4.this, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show();
}
public void onError(DialogError error) {
Toast.makeText( Facebook4.this, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show();
}
public void onCancel() {
Toast.makeText( Facebook4.this, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show();
}
}
最佳答案
我有同样的问题,当我检查我的 list 时,它是这样的
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
我删除了 targetSdkVersion
<uses-sdk
android:minSdkVersion="8"
/>
它奏效了,我认为它会帮助你尝试
关于android - 为 android 2.2 编码的 facebook sdk 无法在 android 4.0.4 上运行,显示错误 android.os.Networkonmainthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029910/
当我尝试实现以下代码时出现 NetworkOnMainThreadException: public class HandlingXMLStuff extends ListActivity{ stat
我正在尝试访问服务器以便接收 JSON 字符串。但显然在 Ice Cream Sandwich 中你不能在主线程中进行网络操作,但是 AsyncTask 类让我感到困惑并且无法正常工作。这是我到目前为
我遇到网络速度非常慢的问题。出于测试目的,我尝试使用 Android 4.0.4 完全切断 asynctask,当然我需要避免在主线程上进行网络调用,否则会出现 networkNotOnMainThr
我创建了一个应用程序,它使用 xml pull 解析器从 url 检索数据。它在模拟器上工作正常,但是当我在选项卡中测试它时,它显示 networkonmainthread 异常。我的代码是: pac
我在运行 https 时收到有关 Lollipop+ 上 NetworkOnMainThread 异常的报告api 调用使用 Retrofit和 RxAndroid . 我已经隔离了代码并创建了以下仍
我的应用程序中的一件事有问题。当我在调试器中启动应用程序时,它会抛出一个错误NetworkOnMainThreadException。更具体地说,当在线程(而不是主线程)中连接到 Web 服务器时会引
这个问题已经有答案了: How can I fix 'android.os.NetworkOnMainThreadException'? (65 个回答) 已关闭 4 年前。 我收到"android.
这个问题在这里已经有了答案: How can I fix 'android.os.NetworkOnMainThreadException'? (66 个答案) 关闭 9 年前。 我在我的 andr
我尝试过使用 Scheduler.newThread() 和 Scheduler.io() 但还是不行这是我的代码 Observable loginObservable = Observable.cr
我正在制作一个 Android 应用程序来从用户获取数据并将其存储在 mongodb 数据库中 mongodb 在 localhost:27017 上运行,我可以在 genymotion 模拟器上使用
我有以下 rxJava 链: override fun combineLocationToPlace(req: Flowable): Flowable { var combinedF
这个问题已经有答案了: NetworkOnMainThread (3 个回答) 已关闭 7 年前。 我正在使用 XmlPullParser 从服务器解析文件,当然我是在另一个线程中执行的。我正在使用
我目前正在 Android 上试验 RxJava,在尝试将 AmbWith 运算符与两个 Observable 一起使用时遇到了问题。 正如我在此处的 amb 定义中所理解的 http://react
下面的代码始终在 Android 上抛出 NetworkOnMainThread,调用尝试是获取位置并使用它通过 RetroFit 2 API 获取列表,这在其他情况下工作正常,ReactiveLoc
我正在尝试在 Android 应用程序中使用 Google map 。 MainActivity 包含EditText、ImageButton 和MapView。当用户提供一些查询并点击 ImageB
您好,我正在研究 facebook api。我已经阅读了 facebook 文档并按照其中的说明进行了编码。下面的代码在 android 2.1-3.2 中运行良好,但是在 android 4.0.4
我是一名优秀的程序员,十分优秀!