मुझे मेरी परियोजना में एक समस्या से मुलाकात हुई। मैं अपने लॉगिन एक्टिविटी में लॉग इन करने के लिए "Google API" का उपयोग करना चाहता हूं। और एक और गतिविधि (WelcomeActivity नाम)mGoogleApiClient किसी अन्य गतिविधि में प्राप्त नहीं किया जा सकता
LoginActivity से बाहर लॉग इन करें: (कोड here है)
public class LoginActivity extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener,
View.OnClickListener {
// Configuration of Google API - Step 1/3
private static final String TAG = "LoginActivity";
private static final int RC_SIGN_IN = 9001;
public static GoogleApiClient mGoogleApiClient;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleAPI();
}
public void GoogleAPI(){
// Button listeners
findViewById(R.id.sign_in_button).setOnClickListener(this);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
}
@Override
public void onStart() {
super.onStart();
....
}
// [START onActivityResult]
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}
// [END onActivityResult]
// [START handleSignInResult]
private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
// Signed in successfully, show authenticated UI.
CustomApplication app = (CustomApplication)getApplication();
GoogleSignInAccount acct = result.getSignInAccount();
Intent i = new Intent(LoginActivity.this, WelcomePage.class);
i.putExtra("Username", acct.getDisplayName());
startActivity(i);
}
}
// [END handleSignInResult]
// [START signIn]
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
// [END signIn]
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
...
}
private void showProgressDialog() {
...
}
private void hideProgressDialog() {
...
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sign_in_button:
signIn();
break;
….
}
}
}
और मैं अपने में आपका स्वागत है गतिविधि में Sign_out विधि का उपयोग करना चाहते,
private void signOut() {
// Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
// new ResultCallback<Status>() {
// @Override
// public void onResult(Status status) {
// // [START_EXCLUDE]
//// updateUI(false);
// // [END_EXCLUDE]
// }
// });
// }
इस समस्या को हल करने के लिए, मैं 2 विधियों का प्रयास करता हूं:
वैश्विक चर के रूप में mGoogleApiClient को बनाते हैं (एप्लिकेशन या सिंगलटन बढ़ाता है), मैं कोशिश करता हूं, लेकिन असफल रहा, स्वागत पृष्ठ में, mGoogleApiClient शून्य नहीं है, लेकिन त्रुटि है: mGoogleApiClient अभी तक कनेक्ट नहीं है।
मैं LoginActivity.getMGoogleApiClient (स्थिर चर) कहते हैं, लेकिन यह भी विफल रहा है, एक ही त्रुटि: mGoogleApiClient अभी तक जुड़ा हुआ नहीं है।
मैं पहले से ही दिनों के लिए इस समस्या को खोजते हैं, लेकिन इसे हल करने के लिए उपयोगी कुछ भी नहीं है, कृपया मेरी मदद करो ..
[एकाधिक गतिविधियों से Google प्लस क्लाइंट तक पहुंच] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/16827839/access-google-plus-client-from-multiple-activities) – V01D1