programacion - El selector de lugar de Google no se inicia en los teléfonos Android Mi
manual de programacion android pdf (2)
Estoy enfrentando un problema con el Selector de lugares de Google en Android Redmi Phones versión 5.1.1. Estoy usando el siguiente código para iniciar el Selector de lugares de 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();
}
He añadido los siguientes permisos y la clave de API y la versión del servicio 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>
Está funcionando en todos los teléfonos, excepto Android Redmi Note2. Cualquier sugerencia sería apreciada. Gracias por adelantado.
A partir de Android 6.0 (nivel de API 23), los usuarios otorgan permisos a las aplicaciones mientras la aplicación se está ejecutando, no cuando la instalan. Este enfoque simplifica el proceso de instalación de la aplicación, ya que el usuario no necesita otorgar permisos cuando instala o actualiza la aplicación. También le da al usuario más control sobre la funcionalidad de la aplicación; por ejemplo, un usuario puede optar por dar acceso a la aplicación de la cámara a la cámara pero no a la ubicación del dispositivo. El usuario puede revocar los permisos en cualquier momento, yendo a la pantalla de configuración de la aplicación.
<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" /> ...
Agrega este código a tu actividad en OnCreate
askForPermission(Manifest.permission.ACCESS_FINE_LOCATION,LOCATION);
/// llama a este método
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();
}
}
Según su archivo de manifiesto, creo que agregó la clave dentro de la etiqueta de manifest
y no la application
. Basado en documentos de Android, la clave debe agregarse así:
<application>
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
</application>
Desafortunadamente, no puedo probarlo con el dispositivo que mencionó, pero recuerdo que tengo un problema similar con un dispositivo Samsung
(el código estaba funcionando en todos los dispositivos, excepto en ese). Además, verifique los registros nuevamente, tal vez haya un mensaje y se lo haya perdido.