Подтвердить что ты не робот

Google на выбор не запускается на телефонах Android Mi

У меня возникла проблема с Google Place Picker в Android Redmi Phones версии 5.1.1. Я использую следующий код для запуска Google Place Picker.

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. Любое предложение будет оценено по достоинству. Спасибо заранее.

4b9b3361

Ответ 1

На основе вашего файла манифеста я считаю, что вы добавили ключ внутри тега manifest, а не application. На основе Android-документов ключ должен быть добавлен следующим образом:

<application>
...
  <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="YOUR_API_KEY"/>
</application>

К сожалению, я не могу проверить его с помощью устройства, о котором вы упомянули, но я помню, что у меня аналогичная проблема с устройством Samsung (код работал на каждом устройстве, кроме этого). Кроме того, проверьте журналы снова, возможно, есть сообщение, и вы его пропустили.

Ответ 2

Начиная с Android 6.0 (уровень API 23), пользователи предоставляют разрешения для приложений во время работы приложения, а не при установке приложения. Этот подход упрощает процесс установки приложения, поскольку пользователю не нужно предоставлять разрешения при установке или обновлении приложения. Это также дает пользователю больше контроля над функциональностью приложения; например, пользователь может выбрать доступ к камере для камеры, но не к местоположению устройства. Пользователь может отменить разрешения в любое время, перейдя на экран настроек приложения.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp" >
  ...
  <uses-permission 

Android: name= "android.permission.ACCESS_COARSE_LOCATION" /" >  Android: name= "android.permission.ACCESS_FINE_LOCATION" /" >

Android: name= "android.permission.ACCESS_COARSE_LOCATION" /" >     ...   

Добавьте этот код в свою деятельность в 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();
        }
    }