Trouble connecting to GooglePlayServices on AVD

情到浓时终转凉″ 提交于 2019-12-08 13:23:59

问题


I am currently trying to access the GooglePlayServices. The internet for all the other functions on the AVD (API 23) works fine, however I am not quite sure what the problem is on my actual app.

Everytime I try to connect, it says that Connection has failed. I believe I have set up the GoogleAPIClient correctly, though in the ConnectionRequest, I have not customised any of the settings (for simplicity's sake).

This is some of my app's code to provide some information.

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>

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

<application
    android:name=".Protoype2"
    android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SettingsMenu"
        android:label="@string/title_activity_settings_menu"
        android:parentActivityName=".MainActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.denny.protoype2.MainActivity" />
    </activity>
    <activity
        android:name=".ViewingWindow"
        android:label="@string/title_activity_viewing_window"
        android:parentActivityName=".MainActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.denny.protoype2.MainActivity" />
    </activity>
</application>

onCreate(); from the relevant Class

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_viewing_window);
    mRequestingLocationUpdates = ((Protoype2)getApplication()).getRequestingLocationUpdates();
    if (!mRequestingLocationUpdates) {
        StoppedMessage();
    }
    ExceedInstance = 0;
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Drive.API)
            .addScope(Drive.SCOPE_FILE)
            .build();
    String[] LocationPermission = new String[]{Manifest.permission.ACCESS_FINE_LOCATION};
    if (ContextCompat.checkSelfPermission(ViewingWindow.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(ViewingWindow.this,
                Manifest.permission.ACCESS_FINE_LOCATION)) {
            GPSExplanation();
        } else {
            ActivityCompat.requestPermissions(ViewingWindow.this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
        }

    }
    onRequestPermissionsResult(MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION, LocationPermission, grantResults);

    final Button BackButton = (Button)findViewById(R.id.VWBackButton);
    BackButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent GoBackIntent = new Intent (ViewingWindow.this, MainActivity.class);
            startActivity(GoBackIntent);
        }
    });
    updateValuesFromBundle(savedInstanceState);

}

Finally, the several predefined methods of connection:

protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}

public void onConnected(Bundle connectionHint) {
    createLocationRequest();
    if (mRequestingLocationUpdates) {
        startLocationUpdates();
    }
}

protected LocationRequest createLocationRequest() {
    return new LocationRequest();
}

回答1:


Check if your AVD has the appropriate version of the Google Play services APK, implement the onConnectionFailed() callback method. Use the parameter ConnectionResult that can be used for resolving the error, and deciding what sort of error occurred.

To resolve the error, the resolution must be started from an activity with a non-negative requestCode passed to startResolutionForResult(Activity, int). Applications should implement onActivityResult in their Activity to call connect() again if the user has resolved the issue (resultCode is RESULT_OK).

Based from this documentation, when your app receives a call to the onConnectionFailed()) callback, you should call hasResolution() on the provided ConnectionResult object. If it returns true, your app can request that the user take immediate action to resolve the error by calling startResolutionForResult() on the ConnectionResult object.

Check this related question. Hope it helps!



来源:https://stackoverflow.com/questions/37115338/trouble-connecting-to-googleplayservices-on-avd

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!