我已將Facebook登錄添加到我的應用程序。Android Facebook登錄無法使用空調用程序包調用LoginFragment
第一次我能夠登錄沒有任何問題。但登錄後,然後我註銷。我在logcat中出現這個錯誤。
E/LoginFragment: Cannot call LoginFragment with a null calling package. This can occur if the launchMode of the caller is singleInstance.
我在谷歌搜索了一下。通過將launchmode設置爲標準來解決一些錯誤。我沒有指定任何啓動模式。但我仍然試着用
<activity
android:name=".activities.LoginActivity"
android:launchMode="standard"/>
但沒有成功。
這是我的程序登錄。
1加FB依賴compile 'com.facebook.android:facebook-android-sdk:[4,5)'
2我初始化FB SDK中Application
類的onCreate()
super.onCreate()
後。 AppEventsLogger.activateApp(this);
3在我的登錄活動中創建CallbackManager
實例onCreate()
的活動。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login);
}
4我用一個自定義按鈕來登錄。當我點擊fb登錄按鈕。我正在使用此代碼。
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
//My Stuff Here
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,first_name,last_name,link,picture.type(large)");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
//Cancel Stuff
}
@Override
public void onError(FacebookException exception) {
exception.printStackTrace();
//Error Stuff
}
}); LoginManager.getInstance().logInWithReadPermissions((AppCompatActivity)context,
Arrays.asList("public_profile, email"));
5我在onActivityResult()註冊回調
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
6和註銷我已經使用LoginManager.getInstance().logOut()
7,但我嘗試使用我的自定義按鈕,調試指針再次登錄去LoginManager.getInstance().registerCallback()
行,但回調的方法(onSuccess(LoginResult loginResult)
,onError()
,onError(FacebookException exception)
)都沒有得到調用。我得到一個日誌說E/LoginFragment: Cannot call LoginFragment with a null calling package. This can occur if the launchMode of the caller is singleInstance.
謝謝,你的回答幫我解決了這個問題。請參閱下面的答案。 –
如果有幫助,請接受我的回答。 –