我在Android Redmi Phones版本5.1.1中遇到Google Place Picker的问题。我使用以下代码启动Google地方选择器。
try {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
startActivityForResult(builder.build(SelectLocationActivity.this), 1);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(SelectLocationActivity.this,""+e.getMessage(),Toast.LENGTH_LONG).show();
}
我添加了以下权限以及api密钥和Google Play服务版本。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="my-api-key" />
</application>
它正在开发除Android Redmi Note2之外的所有手机。任何建议将不胜感激。提前谢谢。
答案 0 :(得分:1)
根据您的清单文件,我认为您在IN
代码中添加了密钥,而不是manifest
。基于Android文档,密钥应添加如下:
application
不幸的是,我无法使用您提到的设备对其进行测试,但我记得我与<application>
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
</application>
设备存在类似问题(代码正在处理每个设备,除了那个设备)。此外,再次检查日志,可能有消息而你错过了它。
答案 1 :(得分:-1)
从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时。此方法简化了应用安装过程,因为用户在安装或更新应用时无需授予权限。它还使用户可以更好地控制应用程序的功能;例如,用户可以选择让相机应用程序访问相机,但不能访问设备位置。用户可以通过转到应用程序的“设置”屏幕随时撤消权限。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp" >
...
<uses-permission
机器人:名称=&#34; android.permission.ACCESS_COARSE_LOCATION&#34; /&GT; 机器人:名称=&#34; android.permission.ACCESS_FINE_LOCATION&#34; /&GT;
机器人:名称=&#34; android.permission.ACCESS_COARSE_LOCATION&#34; /&GT; ...
将此代码添加到OnCreate
中的活动中 askForPermission(Manifest.permission.ACCESS_FINE_LOCATION,LOCATION);
///调用此方法
private void askForPermission(String permission, Integer requestCode) {
if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) {
//This is called if user has denied the permission before
//In this case I am just asking the permission again
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
}
} else {
Toast.makeText(this, "" + permission + " is already granted.", Toast.LENGTH_SHORT).show();
}
}