草庐IT

android - 为 android 2.2 编码的 facebook sdk 无法在 android 4.0.4 上运行,显示错误 android.os.Networkonmainthread

coder 2023-12-20 原文

您好,我正在研究 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/

有关android - 为 android 2.2 编码的 facebook sdk 无法在 android 4.0.4 上运行,显示错误 android.os.Networkonmainthread的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  6. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  7. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  8. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  9. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  10. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

随机推荐