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