Die Version von Play-Diensten auf dem Emulator nicht 9.2.0 unterstützt. Zu diesem Zeitpunkt glaube ich nicht, dass eines der Emulator-Images 9.2.0 unterstützt. Sie können entweder auf 9.0.2 herunterstufen oder auf einem echten Gerät ausführen, bis ein aktualisiertes Emulator-Image veröffentlicht wird.
Wenn Sie genau auf Ihre logcat Ausgabe aussehen sollten Sie eine Meldung wie diese sehen:
W/GooglePlayServicesUtil: Google Play services out of date. Requires 9256000 but found 9080030
Sie können die GPS-Versionsnummer der Emulator, indem Sie auf Einstellungen/Apps verwendet, finden Google Play-Dienste, und tippen Sie darauf, um die App-Info zu erhalten.
Sie können die GPS-Versionsnummer vom Code abrufen, indem Sie GoogleApiAvalability.GOOGLE_PLAY_SERVICES_VERSION_CODE anrufen.
This answer enthält einige verwandte Informationen über Emulatorversionen.
Update für Adrian Cretu Fragen zu realen Geräten
Meine Experimente zeigen, dass es für einen Cast App läuft auf einem realen Gerät möglich ist, eine ältere Version von Play Services zur Erkennung und Bearbeitung der Auflösung zu initiieren. Ich experimentierte mit der CastVideos Beispiel App. Meine Lösung ist vielleicht nicht die beste, aber demonstriert das Konzept. Ich habe eine neue Aktivität erstellt, die beim Start ausgeführt wird und die Verfügbarkeit von Play Services überprüft. Ich habe das manifest diese Aktivität der Launcher Aktivität statt VideoBrowserActivity
zu machen:
public class InitActivity extends AppCompatActivity {
private static final String TAG = "InitActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleApiAvailability googAvail = GoogleApiAvailability.getInstance();
int status = googAvail.isGooglePlayServicesAvailable(this);
Log.i(TAG, "onCreate: Status= " + googAvail.getErrorString(status));
googAvail.makeGooglePlayServicesAvailable(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.i(TAG, "onComplete: Done");
if (task.isSuccessful()) {
Log.i(TAG, "onComplete: Starting VideoBrowser");
startActivity(new Intent(InitActivity.this, VideoBrowserActivity.class));
finish();
} else {
Log.e(TAG, "onComplete: RESOLUTION FAILED");
}
}
});
}
}
Wenn Play Services vorhanden ist, auf dem neuesten Stand, und aktiviert ist, die Aufgabe, die Verfügbarkeit vervollständigt sofort überprüft und startet VideoBrowserActivity
, die ursprüngliche Einführung Aktivität. Andernfalls wird ein Dialogfeld angezeigt, das dem Benutzer mitteilt, dass die Play Services aktualisiert werden müssen. Wenn der Benutzer das akzeptiert hat, wird der Play Store geöffnet und der Benutzer kann einen Download der neuesten Version starten.
Ich konnte keinen Weg finden, sauber zurück zu VideoBrowserActivity
zu übergehen. Ich musste die App neu starten. Mit mehr Arbeit, denke ich, ist eine saubere Erholung von veralteten Play Services möglich. Zumindest etwas besser als ein App-Crash.
Ich habe Fehlermeldung, dass "kein akzeptables Modul gefunden. Lokale Version ist 0 und Remote-Version ist 0", ich füge Laufzeit Berechtigung und Problem gelöst. –