Android Awareness APIを使用して気象データにアクセスしようとしています。私のアプリは、データを表示する前にクラッシュします。私は問題がonCompleteメソッド内にあると信じています。なぜなら、UIがクラッシュする前に画面上で簡単に点滅していて、以前にその行までデバッガを実行できるからです。Android用Google Awareness APIにアクセスするクラッシュApp
コンソールに「FATAL EXCEPTION:GoogleApiHandler」と「java.lang.SecurityException:パッケージのAPIキーが無効です」というメッセージが表示されます。制限のないAPIキーを使用して問題が指紋やパッケージ名でないことを確認しています。で、私は私のアプリモジュールのGradleスクリプトはまた、「実装 『11.6.0:プレイサービス-意識com.google.android.gms』」を含ん
<meta-data android:name="com.google.android.awareness.API_KEY" android:value="[key here]"/>
を使用してマニフェストに自分のAPIキーが含まれています依存関係。
また、Awareness.APIは推奨されていませんが、ドキュメントで使用されているため、何を置き換えるべきかわかりませんという警告もあります。
私のコードは以下の通りです。
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;
}
}
}
メタデータタグに関するヒントをありがとう。私は間違った場所でそれを持っていましたが、それを移動した後、私は同じエラーがあります。私の問題は、ビルダーでアプリがクラッシュするためリンクした質問と同じではありませんが、私よりもさらに数行は得られます。 – user1959417