繁体   English   中英

Android Google+登录

[英]Android google+ login

我正在尝试让google +登录在Android上正常工作。 我的问题是,每当我使用eclipse运行google开发站点上提供的示例时,它都能完美运行。 当我签名apk并在设备上手动安装apk时,出现一些奇怪的错误。

活动:

    package com.watchmon.watchmon;

import android.app.Activity;
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.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
import com.google.android.gms.plus.PlusClient;

public class Testlogin extends Activity implements 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.activity_testlogin);
         mPlusClient = new PlusClient.Builder(this,this,this)
         .build();
 // Anzuzeigende Statusmeldung, wenn der Verbindungsfehler nicht behoben ist
 mConnectionProgressDialog = new ProgressDialog(this);
 mConnectionProgressDialog.setMessage("Signing in...");
    }

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

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

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        if (result.hasResolution()) {
            try {
                result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
            } catch (SendIntentException e) {
                mPlusClient.connect();
            }
        }
        // Speichern Sie das Ergebnis und beheben Sie den Verbindungsfehler bei einem Klick des Nutzers.
        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();
        }
    }

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

    @Override
    public void onConnected(Bundle connectionHint) {
        // TODO Auto-generated method stub
            String accountName = mPlusClient.getAccountName();
            Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG).show();
    }

}

错误:

05-21 14:32:47.430: W/ActivityManager(368): in case of changing top-activity!![com.google.android.gms]
05-21 14:32:47.430: I/ActivityManager(368): START {cmp=com.google.android.gms/.plus.activity.AccountSignUpActivity (has extras) u=0} from pid -1
05-21 14:32:47.500: I/ActivityManager(368): Start proc com.google.android.gms.ui for activity com.google.android.gms/.plus.activity.AccountSignUpActivity: pid=30247 uid=10015 gids={3003, 1015, 1028, 1007, 3002, 3001, 1006, 2001, 3006}
05-21 14:32:47.520: D/ActivityThread(30247): setTargetHeapUtilization:0.25
05-21 14:32:47.520: D/ActivityThread(30247): setTargetHeapIdealFree:8388608
05-21 14:32:47.520: D/ActivityThread(30247): setTargetHeapConcurrentStart:2097152
05-21 14:32:47.530: V/ActivityThread(30247): Class path: /system/framework/com.android.location.provider.jar:/data/app/com.google.android.gms-1.apk, JNI path: /data/data/com.google.android.gms/lib
05-21 14:32:47.590: I/MultiDex(30247): load(/data/app/com.google.android.gms-1.apk, forceReload=false)
05-21 14:32:47.640: I/MultiDex(30247): Need extracted file /data/data/com.google.android.gms/files/secondary-dexes/com.google.android.gms-1.apk.classes2.zip
05-21 14:32:47.640: I/MultiDex(30247): No extraction needed for /data/data/com.google.android.gms/files/secondary-dexes/com.google.android.gms-1.apk.classes2.zip of size 1809539
05-21 14:32:47.660: D/GCM(27444): GcmService start Intent { act=com.google.android.gms.INITIALIZE flg=0x10 pkg=com.google.android.gms cmp=com.google.android.gms/.gcm.GcmService } com.google.android.gms.INITIALIZE
05-21 14:32:47.660: I/dalvikvm(30247): Could not find method android.accounts.AccountManager.getAccountsByTypeForPackage, referenced from method buu.c
05-21 14:32:47.660: W/dalvikvm(30247): VFY: unable to resolve virtual method 1178: Landroid/accounts/AccountManager;.getAccountsByTypeForPackage (Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
05-21 14:32:47.660: D/dalvikvm(30247): VFY: replacing opcode 0x6e at 0x000c
05-21 14:32:47.660: E/dalvikvm(30247): Could not find class 'android.os.UserManager', referenced from method buu.c
05-21 14:32:47.660: W/dalvikvm(30247): VFY: unable to resolve check-cast 540 (Landroid/os/UserManager;) in Lbuu;
05-21 14:32:47.660: D/dalvikvm(30247): VFY: replacing opcode 0x1f at 0x000c
05-21 14:32:47.660: E/dalvikvm(30247): Could not find class 'android.os.UserManager', referenced from method buu.d
05-21 14:32:47.660: W/dalvikvm(30247): VFY: unable to resolve check-cast 540 (Landroid/os/UserManager;) in Lbuu;
05-21 14:32:47.660: D/dalvikvm(30247): VFY: replacing opcode 0x1f at 0x000f
05-21 14:32:47.660: E/dalvikvm(30247): Could not find class 'android.os.UserManager', referenced from method buu.e
05-21 14:32:47.660: W/dalvikvm(30247): VFY: unable to resolve check-cast 540 (Landroid/os/UserManager;) in Lbuu;
05-21 14:32:47.660: D/dalvikvm(30247): VFY: replacing opcode 0x1f at 0x000d
05-21 14:32:47.660: E/dalvikvm(30247): Could not find class 'android.app.AppOpsManager', referenced from method buw.a
05-21 14:32:47.660: W/dalvikvm(30247): VFY: unable to resolve check-cast 301 (Landroid/app/AppOpsManager;) in Lbuw;
05-21 14:32:47.660: D/dalvikvm(30247): VFY: replacing opcode 0x1f at 0x000e
05-21 14:32:47.700: W/ActivityManager(368): in case of changing top-activity!![com.google.android.gms]
05-21 14:32:47.700: I/ActivityManager(368): START {act=com.google.android.gms.common.account.CHOOSE_ACCOUNT pkg=com.google.android.gms cmp=com.google.android.gms/.common.account.AccountPickerActivity (has extras) u=0} from pid 30247
05-21 14:32:47.810: D/dalvikvm(368): WAIT_FOR_CONCURRENT_GC blocked 0ms
05-21 14:32:47.930: D/dalvikvm(368): GC_EXPLICIT freed 3042K, 46% free 33301K/61063K, paused 4ms+11ms, total 119ms
05-21 14:32:47.990: D/SurfaceFlinger(154): createSurface for (1 x 1), name=com.google.android.gms/com.google.android.gms.plus.activity.AccountSignUpActivity
05-21 14:32:48.010: D/libEGL(30247): loaded /system/lib/egl/libEGL_tegra.so
05-21 14:32:48.010: E/(30247): file /data/data/com.nvidia.NvCPLSvc/files/driverlist.txt: not found!
05-21 14:32:48.010: I/(30247): Attempting to load EGL implementation /system/lib//egl/libEGL_tegra_impl
05-21 14:32:48.020: I/(30247): Loaded EGL implementation /system/lib//egl/libEGL_tegra_impl
05-21 14:32:48.020: D/libEGL(30247): loaded /system/lib/egl/libGLESv1_CM_tegra.so
05-21 14:32:48.020: D/libEGL(30247): loaded /system/lib/egl/libGLESv2_tegra.so
05-21 14:32:48.030: I/(30247): Loading GLESv2 implementation /system/lib//egl/libGLESv2_tegra_impl
05-21 14:32:48.030: D/OpenGLRenderer(30247): Enabling debug mode 0
05-21 14:32:48.040: D/SurfaceFlinger(154): createSurface for (720 x 1280), name=com.google.android.gms/com.google.android.gms.plus.activity.AccountSignUpActivity
05-21 14:32:48.080: I/ActivityManager(368): Displayed com.google.android.gms/.plus.activity.AccountSignUpActivity: +589ms

公共和调试签名密钥均已添加到Google控制台项目。 吐司说内部错误。 如果有人有任何想法,请提前致谢:)

我想这比以往任何时候都晚。 但是,您应该使用GoogleApiClient.Builder方法,而不是PlusClient,因为PlusClient已被弃用。

SHA-1密钥有2种类型,

1)您将从cmd获得的第一个SHA-1

http://www.androidhive.info/wp-content/uploads/2014/02/android-generating-sha1-fingerprint.png?5e2378

2)每当您制作签名应用时,

http://i.stack.imgur.com/SldEv.png

两个SHA-1密钥互不相同,

cmd SHA-1密钥仅适用于您的手机,但您在签名时获得的ShA-1密钥(如果使用该密钥)将适用于所有手机,

因此,出于测试目的,您应该使用CMD密钥,然后将应用程序上载到Playstore之后,需要用签名的SHA-1密钥替换旧密钥。

我希望你能理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM