2017-11-23 6 views
1

Ich versuche, die Android Awareness-API für den Zugriff auf Wetterdaten zu verwenden. Meine App stürzt ab, bevor die Daten angezeigt werden. Ich glaube, das Problem liegt in der onComplete-Methode, weil die Benutzeroberfläche kurz vor dem Absturz auf dem Bildschirm blinkt und ich den Debugger bis zur vorherigen Zeile ausführen kann.Zugriff auf Google Awareness API für Android stürzt ab App

Die Konsole sagt "FATAL EXCEPTION: GoogleApiHandler" und "java.lang.SecurityException: Ungültiger API-Schlüssel für Paket" Ich verwende einen unbeschränkten API-Schlüssel, um sicherzustellen, dass das Problem nicht der Fingerabdruck- oder Paketname ist. Ich habe meine API-Schlüssel im Manifest enthalten mit

<meta-data android:name="com.google.android.awareness.API_KEY" android:value="[key here]"/>

Meine App-Modul Gradle Skript auch "Implementierung 'com.google.android.gms: Play-Dienste-Bewusstsein: 11.6.0'" umfasst in der Abhängigkeiten.

Es gibt auch eine Warnung, dass Awareness.API veraltet ist, aber ich weiß nicht, was ich ersetzen soll, weil es in der Dokumentation verwendet wird.

Mein Code ist unten.

public class MainActivity extends AppCompatActivity { 

private static int MY_PERMISSION_LOCATION; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (ContextCompat.checkSelfPermission(
      MainActivity.this, 
      Manifest.permission.ACCESS_FINE_LOCATION) == 
      PackageManager.PERMISSION_GRANTED) { 

     GoogleApiClient client = new GoogleApiClient.Builder(this.getApplicationContext()) 
       .addApi(Awareness.API) 
       .build(); 
     client.connect(); 

     SnapshotClient sc = Awareness.getSnapshotClient(this); 
     Task<WeatherResponse> weatherResponseTask = sc.getWeather().addOnCompleteListener(new OnCompleteListener<WeatherResponse>() { 
      @Override 
      public void onComplete(@NonNull Task<WeatherResponse> task) { 
       WeatherResponse wr = task.getResult(); 
       Weather weather = wr.getWeather(); 
       float temp = weather.getTemperature(Weather.FAHRENHEIT); 
       TextView textView = findViewById(R.id.tempText); 
       textView.setText("It is currently " + temp + " degrees outside."); 
      } 
     }); 
    } else { 
     ActivityCompat.requestPermissions(
       MainActivity.this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
       MY_PERMISSION_LOCATION 
     ); 
     return; 
    } 
} 
} 

Antwort

0

Ich lief auf das gleiche Problem. Ich habe versucht, den Schlüssel auf das Paket zu beschränken, aber immer noch das Problem mit dem ungültigen Schlüssel.

Am Ende hat mir diese post geholfen. Stellen Sie sicher, dass das meta_data-Tag in dem Manifest in dem application-Tag eingefügt wird.

+0

Danke für den Tipp über das Meta-Tag. Ich hatte es an der falschen Stelle, aber nach dem Verschieben habe ich den gleichen Fehler. Mein Problem ist nicht das Gleiche wie die Frage, die Sie verlinkt haben, weil ihre App beim Builder abstürzt, aber meine geht ein paar Zeilen weiter. – user1959417