Détection et modification de la connexion de données par programme (GPRS / UMTS) sur Android

StackOverflow https://stackoverflow.com/questions/3036239

  •  27-09-2019
  •  | 
  •  

Question

Je sais que la détection et la modification de la connexion de données programmatiques (GPRS / UMT) sur Android vanille n'est malheureusement pas possible, et la solution de contournement est de modifier les paramètres APN. Ce n'est guère une belle solution.

Cependant, sur mon appareil (Xperia X10), j'ai un paramètre supplémentaire près de "l'itinérance de données", qui permet d'activer ou de désactiver les MM et les données. Je suppose qu'il s'agit d'une personnalisation faite par Sony Ericsson, et peut-être même que d'autres fournisseurs ont quelque chose comme ça. Existe-t-il un moyen d'accéder à ce paramètre?

Était-ce utile?

La solution

Je n'ai pas de téléphone SE, mais j'ai examiné son vidage système et:

  • Dans les sources AOSP, il existe deux méthodes internes dans interface com.android.internal.telephony: activédAtaconnectivity () et DisabledAtaconnectivity (). Cette interface et son implémentation font partie du système.
  • Il existe également deux méthodes avec les mêmes noms que ci-dessus dans com.android.phone.phoneInterfaceManager qui fait partie de l'application Phone.apk. Ces méthodes appellent simplement celles ci-dessus / système.
  • Sony modifié com.android.phone.phoneInterfaceManager.enabledAtaconnectivity (), il est donc de plus en plus vérifié pour booléen stocké dans SharedPreferences. S'il est faux, alors activé Adataconnectivity () appelle toujours DisabledAtaconnectivity () de com.android.internal.telephony.
  • Bien sûr, ce booléen est contrôlé via l'écran des préférences: "MMS & Data". Il est stocké dans "com.android.phone_preferences" Préférences Le conteneur et la clé préfère est: "data_service_key". De plus, lorsque vous changez cette case, l'activité des paramètres appelle automatiquement les méthodes à partir de com.android.internal.telephony pour changer l'état des données immédiatement.

Si vous souhaitez ajouter un widget de connexion de données ou quelque chose comme ça à votre ROM, alors:

  • Vous avez besoin de racine.
  • Vous avez besoin de "Android.uid.phone" SharedUserid pour accéder aux paramètres ci-dessus.

Je pense qu'il serait préférable de modifier le téléphone.apk, il a donc une intention particulière pour activer / désactiver les données. Il définirait Data_Service_Key Boolean et appellerait l'une des méthodes de com.android.internal.telephony. Cela devrait être assez facile à faire, puis vous pourrez créer des widgets, des applications et d'autres trucs très facilement - ils utiliseraient cette intention particulière.

Autres conseils

Avez-vous regardé Zone du développeur SE? J'ai trouvé que c'était assez utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top