Android()GoogleApiClient应用程序在connect()时崩溃

时间:2015-06-24 14:41:14

标签: java android

我的应用在MainActivity没有任何错误消息时崩溃了。它永远不会到达onConnectionFailed。这就是我所拥有的:

public class MainMenu extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { public static final int REQUEST_LEADERBOARD = 1; public static int SCREEN_WIDTH; public static int SCREEN_HEIGHT; private GoogleApiClient googleApiClient; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); SCREEN_WIDTH = metrics.widthPixels; SCREEN_HEIGHT = metrics.heightPixels; googleApiClient = new GoogleApiClient.Builder(this) .addApi(Games.API).addScope(Games.SCOPE_GAMES) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } public void newGame(View view) { Intent intent = new Intent(MainMenu.this, Game.class); startActivity(intent); finish(); } public void highScore(View view) { if (isSignedIn()) { startActivityForResult(Games.Leaderboards.getLeaderboardIntent(googleApiClient, String.valueOf(R.string.leaderboard_id)), REQUEST_LEADERBOARD); } else { System.out.println("not sign in"); } } @Override public void onConnected(Bundle bundle) { } @Override public void onConnectionSuspended(int i) { } @Override public void onConnectionFailed(ConnectionResult connectionResult) { System.out.println("failed"); } @Override protected void onStart() { super.onStart(); googleApiClient.connect(); //here it crashed } private boolean isSignedIn() { return (googleApiClient != null && googleApiClient.isConnected()); } }

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="my.package"
          android:versionCode="2"
          android:versionName="1.1">
    <uses-sdk android:minSdkVersion="1"/>



    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"
                 android:theme="@style/Theme.AppCompat.NoActionBar"
                 android:isGame="true" >

        <meta-data
                android:name="com.google.android.gms.games.APP_ID"
                android:value="@string/app_id" />
        <meta-data
                android:name="my.package.version"
                android:value="com.google.android.gms.version" />


        <activity android:name=".activities.MainMenu">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".activities.Game"/>
        <activity android:name=".activities.GameOver"/>
        <activity android:name=".activities.HighScore"/>
    </application>
</manifest>

我做了什么:

我已生成签名APK,我有sha1键。我发布了alpha测试应用程序。

清单:

{{1}}

我已在安装了Google Play服务的设备上对其进行测试。你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您应该为您的清单添加互联网权限。

<uses-permission android:name="android.permission.INTERNET"/>

如果您需要更多帮助,则应显示错误堆栈跟踪。

希望它可以帮到你!

答案 1 :(得分:0)

解决方案很简单

<meta-data
    android:name="my.package.version"
    android:value="com.google.android.gms.version" />

是废话。

它应该是:

<meta-data
     android:name="com.google.android.gms.version"
     android:value="@integer/google_play_services_version" />