谷歌地方选择器没有在Android Mi手机上发布

时间:2016-06-23 05:38:00

标签: android google-play-services google-places-api android-location

我在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之外的所有手机。任何建议将不胜感激。提前谢谢。

2 个答案:

答案 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();
        }
    }