2013-05-12 14 views
8

शुरू नहीं होगी मैं अपनी परियोजना में com.actionbarsherlock.app.SherlockActivity का उपयोग कर रहा हूं। जब मैं एक और गतिविधि शुरू करने का प्रयास करता हूं जहां मुझे इस त्रुटि में Google+ साइन करने की आवश्यकता होगी। मुझे यह त्रुटि एक वास्तविक डिवाइस पर मिल रही है, न कि एमुलेटर। आपको क्या लगता है कि मैं गलत कर रहा हूँ?Google + साइन इन: गतिविधि

त्रुटि

05-12 15:58:12.487: E/AndroidRuntime(24310): FATAL EXCEPTION: main 
05-12 15:58:12.487: E/AndroidRuntime(24310): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.gms/com.google.android.gms.plus.activity.AccountSignUpActivity}: java.lang.SecurityException: Must be started via startActivityForResult 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.os.Looper.loop(Looper.java:137) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at java.lang.reflect.Method.invoke(Method.java:511) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at dalvik.system.NativeStart.main(Native Method) 
05-12 15:58:12.487: E/AndroidRuntime(24310): Caused by: java.lang.SecurityException: Must be started via startActivityForResult 
05-12 15:58:12.487: E/AndroidRuntime(24310): at com.google.android.gms.plus.activity.AccountSignUpActivity.onCreate(AccountSignUpActivity.java:119) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.Activity.performCreate(Activity.java:5104) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
05-12 15:58:12.487: E/AndroidRuntime(24310): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
05-12 15:58:12.487: E/AndroidRuntime(24310): ... 11 more 

LandingActivity.java

public class LandingActivity extends SherlockActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    Intent i = new Intent(getApplicationContext(), SignInActivity.class); 
    this.startActivityForResult(i, 1); 
} 
} 

SignInActivity.java

import com.actionbarsherlock.app.SherlockActivity; 
import android.view.View; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.content.IntentSender.SendIntentException; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 
//import com.google.android.gms.common.*; 
//import com.google.android.gms.common.GooglePlayServicesClient.*; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks; 
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener; 
import com.google.android.gms.plus.PlusClient; 


/** 
* Example of signing in a user with Google+, and how to make a call to a Google+ API endpoint. 
*/ 
public class SignInActivity extends SherlockActivity 
implements View.OnClickListener, ConnectionCallbacks, OnConnectionFailedListener 
{ 
    private static final String TAG = "ExampleActivity"; 
    private static final int REQUEST_CODE_RESOLVE_ERR = 9000; 

    private ProgressDialog mConnectionProgressDialog; 
    private PlusClient mPlusClient; 
    private ConnectionResult mConnectionResult; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sign_in_activity); 
     findViewById(R.id.sign_in_button_dude).setOnClickListener(this); 

     mPlusClient = new PlusClient.Builder(this, this, this).build(); 
     //.setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity") 
     // Progress bar to be displayed if the connection failure is not resolved. 
     mConnectionProgressDialog = new ProgressDialog(this); 
     mConnectionProgressDialog.setMessage("Signing in..."); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mPlusClient.connect(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     mPlusClient.disconnect(); 
    } 

    public void onConnectionFailed(ConnectionResult result) { 
     if (result.hasResolution()) { 
      try { 
       result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); 
      } catch (SendIntentException e) { 
       mPlusClient.connect(); 
      } 
     } 
     // Save the result and resolve the connection failure upon a user click. 
     mConnectionResult = result; 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int responseCode, Intent intent) { 
     if (requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) { 
      mConnectionResult = null; 
      mPlusClient.connect(); 
     } 
    } 

    public void onConnected() { 
     String accountName = mPlusClient.getAccountName(); 
     //mConnectionProgressDialog.dismiss(); //https://developers.google.com/+/mobile/android/sign-in 
     Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG).show(); 
     //Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show(); 
    } 

    public void onDisconnected() { 
     Log.d(TAG, "disconnected"); 
    } 

    public void onClick(View view) { 
     if (view.getId() == R.id.sign_in_button_dude && !mPlusClient.isConnected()) { 
      if (mConnectionResult == null) { 
       mConnectionProgressDialog.show(); 
      } else { 
       try { 
        mConnectionResult.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); 
       } catch (SendIntentException e) { 
        // Try connecting again. 
        mConnectionResult = null; 
        mPlusClient.connect(); 
       } 
      } 
     } 
    } 
} 

मैं "setScopes (Scopes.PLUS_LOGIN)" का उपयोग करने का भी प्रयास किया है, लेकिन एक ही समस्या में भाग गया।

import com.google.android.gms.common.Scopes; 
// in onCreate() 
mPlusClient = new PlusClient.Builder(this, this, this).setScopes(Scopes.PLUS_LOGIN).build(); 

मैंने कीटोल भी शुरू करने की कोशिश की .... एंड्रॉइडबगकी की आवश्यकता है? https://developers.google.com/+/mobile/android/getting-started

C:\repos>c:\java\jdk1.6.0_34\bin\keytool.exe -exportcert -alias androiddebugkey -keystore agoyal-release-key.keystore -list -v 
Enter keystore password: 
keytool error: java.lang.Exception: Alias <androiddebugkey> does not exist 
    java.lang.Exception: Alias <androiddebugkey> does not exist 
    at sun.security.tools.KeyTool.doPrintEntry(KeyTool.java:1339) 
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:869) 
    at sun.security.tools.KeyTool.run(KeyTool.java:172) 
    at sun.security.tools.KeyTool.main(KeyTool.java:166) 
+1

** "मैं क्या गलत कर रहा हूं?" ** अच्छी बात यह है कि आप पहली बार गलत कर रहे हैं, क्या आप हमें अपना पूरा कोड नहीं दिखा रहे हैं। समस्या 'com.google.android.gms.plus.activity.AccountSignUpActivity' के साथ है। मान लें कि आप इसे 'साइनइनएक्टिविटी' से शुरू करने की कोशिश कर रहे हैं, इससे मदद नहीं मिलती है कि आपने केवल '/ * कोड * /' दिखाया है। – Squonk

+0

Squonk: मैंने साइन इनएक्टिविटी में सभी कोड साझा किए हैं। जावा – AG1

+0

लॉगकैट से, मैं @ स्क्वॉन्क से सहमत हूं, कुछ कोड गायब हैं! – thiagolr

उत्तर

1
Keytool आदेश के लिए

, अगर आप अपनी खुद की रिहाई कुंजी का उपयोग करें, उपनाम में एक अपने इस्तेमाल किया कुंजी, नहीं "androiddebugkey" होना चाहिए।

+0

इसके लिए धन्यवाद - मुझे नहीं पता कि Google अपने दस्तावेज़ों में क्यों स्पष्टीकरण नहीं देता है ... – bkurzius

0

कुछ सही नहीं है, क्या आप वाकई सही लॉगक आउटपुट थे?

अपने कोड के साथ, आपको जो त्रुटि दिखाई दे रही है उसके बजाय आपको android.app.SuperNotCalledException: Activity {LandingActivity} did not call through to super.onCreate() अपवाद प्राप्त करना चाहिए।

इसके अलावा, SignInActivity में आपके public onConnected() विधि में गलत हस्ताक्षर है। सही एक public onConnected(Bundle connectionHint) होना चाहिए। ऐसा लगता है कि आपका ऐप सही ढंग से संकलित नहीं किया गया है।

संबंधित मुद्दे