Google+ Menschen API wird schließlich 2017 Q1 vollständig veraltet, unter deprecation Anmerkungen Details siehe:
Android Ankündigung: https://developers.google.com/+/mobile/android/api-deprecation
REST-Endpunkt-Mitteilung: https://developers.google.com/+/web/people/#retrieve-a-collection-of-people
So sollten Sie Alternativen in Betracht ziehen vorgeschlagen und keine neuen Funktionen basierend auf G + Circle Freunden zu erstellen, da keine Daten für neue Benutzer mit dem plus.login Bereich verfügbar sind.
Wenn Sie keine Laufzeitberechtigungen anfordern möchten, können Sie weiterhin angemeldete Benutzerkontakte von People REST API erhalten (Beachten Sie, dass dies etwas anderes als die G + People API ist). Wenn Sie die Profilinformationen eines anderen Benutzers als den ersten/letzten/angezeigten Namen, die E-Mail-Adresse und die Profilbild-URL (die bereits von der Anmelde-API bereitgestellt wird) benötigen, sollten Sie auch dieselbe neue Personen-API verwenden.
Auf Android, wenn Sie Kontakten Daten benötigen (Im Zusammenhang mit dem Benutzer zu erklären, warum sie ihre Kontakte Informationen bitten. Fordern NICHT Umfang Kontakte im Voraus in der Front-Tür Sign-In Aktivität)
// Add dependencies (SDKs will be downloaded from mavenCentral)
compile 'com.google.api-client:google-api-client:1.22.0'
compile 'com.google.api-client:google-api-client-android:1.22.0'
compile 'com.google.apis:google-api-services-people:v1-rev4-1.22.0'
Dann schreiben Sie den Anmeldecode.
// Make sure your GoogleSignInOptions request email & contacts scopes as shown below
GoogleSignInOptions gso =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(PeopleScopes.CONTACTS_READONLY)))
.build();
// Follow official doc to sign-in.
// https://developers.google.com/identity/sign-in/android/sign-in
Dann können Sie neue People Api verwenden, um Kontaktliste abzurufen.
/** Global instance of the HTTP transport. */
private static HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();
/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
// On worker thread
GoogleAccountCredential credential =
GoogleAccountCredential.usingOAuth2(MainActivity.this, PeopleScopes.CONTACTS_READONLY);
credential.setSelectedAccount(
new Account(googleSignInAccount.getEmail(), "com.google"));
People service = new People.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME /* whatever you like */)
.build();
ListConnectionsResponse response = service.people().connections()
.list("people/me")
// request 20 contacts
.setPageSize(20)
.execute();
List<Person> connections = response.getConnections();
if (connections != null && connections.size() > 0) {
for (Person person : connections) {
List<Name> names = person.getNames();
if (names != null && names.size() > 0) {
Log.i(TAG, "Name: " + person.getNames().get(0).getDisplayName());
} else {
Log.i(TAG, "No names available for connection.");
}
List<Gender> genders = person.getGenders();
String ageRange = person.getAgeRange();
List<Birthday> birthdays = person.getBirthdays();
...
}
}
Sie wurden mit dem Plus-API, die Kontakte API * oder * den Provider empfiehlt es jetzt –
Wie ich in Frage oben gesagt, weiß ich, dass diese Lösungen existieren. Aber sie sind zu harte Alternativen von dem, was vorher war. Ich glaube nicht, dass die Verwendung von Cursors und die Verwaltung von Laufzeitberechtigungen die Alternative der einfachen Methode ist, die war. –
Cursor sind nur für den Provider, ja? Nicht die [Kontakte API] (https://developers.google.com/google-apps/contacts/v3 /) –