2011-02-17 4 views
8

Necesito poder activar y desactivar el receptor GPS, y WRITE_SECURE_SETTINGS es necesario para poder acceder a la configuración segura. He buscado bastante, y cada respuesta que vi casi dice que ninguna aplicación fuera del sistema/firmware puede obtener ese permiso.¿Cómo puedo obtener el temido permiso WRITE_SECURE_SETTINGS para mi aplicación de Android?

Sin embargo, eso es simplemente falso. Hay varias aplicaciones en el mercado que hacen exactamente lo que intento (en lo que respecta al GPS), pero hay muchas más que tienen los permisos WRITE_SECURE_SETTINGS. Por ejemplo:

Extended Controls

SwitchPro

Profile Flow

Entonces, ¿cómo se puede hacer esto?

Respuesta

23

tengo que ser capaz de alternar el receptor GPS y fuera

Por razones de privacidad, si no otra cosa, la activación o desactivación de cualquier tipo de localización de seguimiento de tiene que ser exclusivamente en manos de el usuario a través de aplicaciones de confianza, no a petición de terceros arbitrarios.

Por lo tanto, si desea activar y desactivar el GPS, cree su propio firmware que haga lo que necesita y cargue ese firmware en los dispositivos que desee. O bien, contribuya con sus modificaciones a las modificaciones de firmware existentes (p. Ej., Cyanogen).

WRITE_SECURE_SETTINGS se requiere que sea capaz de configuración segura

correcta acceder.

He buscado bastante, y cada respuesta que vi decía que ninguna aplicación fuera del sistema/firmware puede obtener ese permiso.

Correcto.

Sin embargo, eso es simplemente falso.

No, es bastante cierto.

Existen varias aplicaciones en el mercado que hacen exactamente lo que estoy tratando de (en cuanto a GPS)

Encontraron un agujero de seguridad. Tomaré medidas para ayudar a asegurar que este agujero se arregle.

pero hay un montón más que tiene los permisos WRITE_SECURE_SETTINGS

No, hay un montón que pregunte por ellos. Puedes pedir el permiso que quieras. Lo que pides es lo que aparece en estas listas. Lo que obtener es una historia diferente.

+0

Además, Fwiw, Controles ampliados (que he comprado) no permite que directa o desactivar el GPS, sino que conduce a la ubicación y Página de configuración de seguridad para alternarlo usted mismo. – CommonsWare

+0

Pero en mi aplicación, el usuario estaría seleccionando la opción, solo tratando de guardar un grupo de pasos para llevarlos primero a la configuración. ¿No tendría más sentido si hubiera una configuración adicional en "Ubicación y seguridad" (con una advertencia muy rigurosa, por supuesto) que permita a las aplicaciones externas controlar el GPS? De esta forma, un usuario puede elegir la facilidad de uso sobre la seguridad o viceversa. – user496854

+0

Y lo siento por los controles extendidos, quise decir Power Controls plus. He visto un montón de ellos en las últimas semanas, y confundí a los dos. – user496854

0

Sólo esto. Puede acceder al widget que tienen todos los dispositivos móviles.

public void ativaGPS() { 
     LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      Intent intent = new Intent(); 
      intent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
      intent.addCategory(Intent.CATEGORY_ALTERNATIVE); 
      intent.setData(Uri.parse("3")); 
      sendBroadcast(intent); 
     } 
+0

Esto en el caso del GPS. En el caso de la ubicación de red, sigo buscando un método para hacerlo. –

+0

Esto solo funciona en versiones anteriores del sistema operativo. ICS y más nuevos lo bloquean. – user496854

+0

Lo sé. ¿Tienes otro? –

12

Prueba este comando adb, esto le dará el permiso en tiempo de ejecución de aplicaciones

adb shell pm grant package android.permission.WRITE_SECURE_SETTINGS 

Paso a seguir:

  1. Conectar el dispositivo (Haga habilitado seguro de depuración USB)

  2. Ejecutar el comando anterior adb

  3. Instale apk

Funcionó para mí ...

+0

¿Está diciendo que esto otorgará permanentemente este permiso al archivo APK o que el comando se debe ejecutar siempre? – user496854

+0

No se proporciona permanentemente. Ejecute este comando cada vez que cree y ejecute el código. – Pradeep

+0

Es un comando ADb, entonces, ¿cómo puedo ejecutarlo desde el dispositivo? – user496854

Cuestiones relacionadas