我是Android的新手,我正在尝试使用“Android脸谱图Api GraphRequest.newMeRequest”,但我的代码不起作用,当我登录时应用程序崩溃 . 这是我的代码,也许有人可以帮助我 .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
facebookSDKInitialize();
setContentView(R.layout.activity_main);
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("email");
getLoginDetails(loginButton);
}
/*
Initialize the facebook sdk
*/
protected void facebookSDKInitialize() {
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
}
/*
Register a callback function with LoginButton to respond to the login result.
*/
protected void getLoginDetails(LoginButton login_button){
// Callback registration
login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult login_result) {
getUserInfo(login_result);
}
@Override
public void onCancel() {
// code for cancellation
}
@Override
public void onError(FacebookException exception) {
// code to handle error
}
});
}
/*To get the facebook user's own profile information via creating a new request.*/
protected void getUserInfo(LoginResult login_result){
GraphRequest data_request = GraphRequest.newMeRequest(
login_result.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject json_object,
GraphResponse response) {
Intent intent = new Intent(MainActivity.this,HomeActivity.class);
intent.putExtra("jsondata",json_object.toString());
startActivity(intent);
}
});
Bundle permission_param = new Bundle();
permission_param.putString("fields", "id,name,email,picture.width(120).height(120)");
data_request.setParameters(permission_param);
data_request.executeAsync();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
Log.e("data",data.toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onResume() {
super.onResume();
// Logs 'install' and 'app activate' App Events.
AppEventsLogger.activateApp(this);
}
@Override
protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event.
AppEventsLogger.deactivateApp(this);
}
}
在Android Studio中我收到错误:
E / AndroidRuntime:FATAL EXCEPTION:main进程:com.example.novella.auto,PID:11300主题:themes:{} java.lang.NullPointerException:尝试调用虚方法'java.lang.String org.json.JSONObject com.facebook.GraphRequest $ 1.onCompleted(GraphRequest.java :)在com.facebook上的com.example.novella.autofa.MainActivity $ 2.onCompleted(MainActivity.java:73)上的空对象引用上的.toString()' .GraphRequest $ 5.run(GraphRequest.java:1368)在android.os.Handler.handleCallback(Handler.java:739)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop (looper.java:148)位于android.app.ActivityThread.main(ActivityThread.java:5475)的java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
错误“尝试在空对象引用上调用虚方法'java.lang.String org.json.JSONObject.toString()'”引用此字符串:
intent.putExtra("jsondata",json_object.toString());
我做错了什么?拜托,帮助我! :)