Android app force在某些设备上关闭,但在其他设备上关闭

时间:2011-05-17 18:00:46

标签: android facebook nullpointerexception

我最近在市场上发布了我的应用。我在两台设备和几台仿真器上进行了测试,效果很好。但是,我现在收到一些崩溃报告,其中包含以下错误:

java.lang.RuntimeException:将结果ResultInfo {who = null,request = 32665,result = -1,data = Intent {(has extras)}}传递给activity {com.eden.statusphere / com .eden.statussphere.FacebookConnect}:java.lang.NullPointerException

我只向FacebookConnect传递一件事:一个字符串......这是代码。 (我正在使用easyandroidfacebooksdk)

private OnClickListener FacebookonListener = new OnClickListener() {
    public void onClick(View v) {
        try{

            ConnectivityManager cMgr = (ConnectivityManager) v.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);         
            NetworkInfo netInfo = cMgr.getActiveNetworkInfo();
            String status = netInfo.getState().toString();

            if (status.equals("CONNECTED")) {
                intent.putExtra(".myMsg",statusHolder);
                startActivity(intent);
            } else {
                Toast.makeText(getApplicationContext(), "No connection available",
                Toast.LENGTH_SHORT).show(); 
            }

        }
        catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Connection refused",
            Toast.LENGTH_SHORT).show(); 
        }
   }
};

以上是onClickListener,statusHolder是一个传递给我的FacebookConnect活动的字符串。这是FacebookConnect中发生错误的部分:

    public void loginSuccess(Facebook facebook) {

    GraphApi graphApi= new GraphApi(facebook);
    if(intent.getStringExtra(".myMsg")!="null"){

    try {

        graphApi.setStatus(intent.getStringExtra(".myMsg"));
        fbManager.displayToast("Status posted!");
        Intent myIntent = new Intent(this, mainActivity.class);
        startActivityForResult(myIntent, 0);

    } catch (EasyFacebookError e) {
        e.toString();
    }
    } else {
        fbManager.displayToast("Fatal error occured: Your device refuses to pass the information to Facebook.");
    }



}

我刚刚添加的if-else语句,用于检查是否可能将intent传递为null,但无论如何我都会收到有关同一问题的崩溃报告。我已经把头发拉了一段时间了。有人有线索吗?它没有使用的一个设备是HTC Thunderbolt。

2 个答案:

答案 0 :(得分:5)

    if(intent.getStringExtra(".myMsg")!="null"){

您将String extra与字符串“null”进行比较,除非您传入的额外String恰好是常量字符串“null”,否则它将始终失败。要解决此问题,您需要直接比较对象引用,而不是.equals()

您不想将其与 null进行比较吗?

    if(intent.getStringExtra(".myMsg")!= null){

请注意,由于您的代码目前存在,您的比较将失败,因此您将进入try子句并最终调用

    graphApi.setStatus(intent.getStringExtra(".myMsg"));

返回的额外内容实际为null

答案 1 :(得分:2)

我完全忘记了这个问题,但我想我应该记录下来。无论如何,事实证明当时是Facebook的错。我的应用程序在Facebook服务器上运行几天后问题就解决了。

我想我应该提一下:

在整个考验期间,我做了大量的搜索试图解决这个问题,而且奇怪的是,如果API密钥无效(使用keytool生成的密钥),这也是同样的问题。因此,如果有人遇到此问题,我建议确保他们的密钥都正确无误。如果密钥正确无误,请等待几天,然后再在Android电子市场上发布您的应用。