创建GoogleApiClient对象时出错,给出java.lang.IllegalStateException:已经管理了ID为0的GoogleApiClient

Rah*_*Das 2 java google-api illegalstateexception

我想在android中实现autocomplete place google API.为此,我需要创建一个GoogleApiClient对象.我已经使用了以下代码...

private GoogleApiClient mGoogleApiClient;

mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .enableAutoManage(getActivity(), 0 /* clientId */, this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
Run Code Online (Sandbox Code Playgroud)

但是当片段启动时,它会抛出以下异常并且应用程序崩溃了.

java.lang.IllegalStateException:已经管理了ID为0的GoogleApiClient

注意:这是在FRAGMENT中执行的.

以下是清单文件配置..

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.example.permission.MAPS_RECEIVE"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:name="com.example.bluehorsesoftkol.ekplatevendor.Utils.EkPlateVendorApplication">


        <activity
            android:name="com.example.bluehorsesoftkol.ekplatevendor.activity.registration.ActivitySplashScreen"
            android:label="@string/app_name"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.bluehorsesoftkol.ekplatevendor.activity.registration.ActivityLogin"
            android:screenOrientation="landscape">
        </activity>
        <activity
            android:name=".activity.vendor.ActivityHome"
            android:screenOrientation="landscape">
        </activity>
        <activity         android:name="com.example.bluehorsesoftkol.ekplatevendor.activity.vendor.ActivityAddVendor"
            android:screenOrientation="landscape">
        </activity>
        <activity
            android:name=".activity.vendor.CustomGalleryActivity"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="ekplatevendor.ACTION_PICK" />
                <action android:name="ekplatevendor.ACTION_MULTIPLE_PICK" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <uses-feature
            android:glEsVersion="0x00020000"
            android:required="true"/>

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/TEST_API_KEY"/>

    </application> 
Run Code Online (Sandbox Code Playgroud)

所以,请帮助解决这个问题..

谢谢.

Rav*_*udi 14

在你的代码中尝试这个

@Override
public void onStart() {
    super.onStart();
    if (mGoogleApiClient != null)
    mGoogleApiClient.connect();
}

@Override
public void onStop() {
    super.onStop();
    if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
        mGoogleApiClient.stopAutoManage((Activity) context);
        mGoogleApiClient.disconnect();
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:从Playstore版本10你不必使用

mGoogleApiClient.stopAutoManage((Activity) context);

因为它将由图书馆自己照顾.