访问Google Awareness API for Android Crashes App

时间:2017-11-23 18:28:08

标签: java android google-awareness

我正在尝试使用Android Awareness API访问天气数据。我的应用程序在显示数据之前崩溃了。我认为问题出在onComplete方法中,因为UI在崩溃之前会在屏幕上短暂闪烁,并且我能够在之前运行调试器。

控制台说“FATAL EXCEPTION:GoogleApiHandler”和“java.lang.SecurityException:包的API密钥无效”我使用的是不受限制的API密钥,以确保问题不是指纹或包名。我已使用

将我的API密钥包含在清单中

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

我的应用模块Gradle脚本还在依赖项中包含“实现'com.google.android.gms:play-services-awareness:11.6.0'”。

还有一个警告,即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;
    }
}
}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我尝试将密钥限制在包中,但仍然遇到“无效密钥”问题。

最后,这post对我有所帮助。确保meta_data标记放在清单中的application标记内。