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

abu*_*891 1 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(); 
        }
   }
};
Run Code Online (Sandbox Code Playgroud)

以上是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.");
    }



}
Run Code Online (Sandbox Code Playgroud)

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

Gra*_*and 5

    if(intent.getStringExtra(".myMsg")!="null"){
Run Code Online (Sandbox Code Playgroud)

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

你不想将它与价值 进行比较null吗?

    if(intent.getStringExtra(".myMsg")!= null){
Run Code Online (Sandbox Code Playgroud)

请注意,正如您的代码当前所示,您的比较将失败,因此您将进入该try子句并最终调用

    graphApi.setStatus(intent.getStringExtra(".myMsg"));
Run Code Online (Sandbox Code Playgroud)

返回的额外实际上是在哪里null.