Peut-être que ces citations et des liens peut vous aider à coder votre propre solution:
1.- Pour obtenir une liste des fournisseurs de réseau disponible (en citant Comment obtenir une liste de fournisseurs de réseau disponible? dans son intégralité):
Depuis Android est open source, j'ai eu un coup d'oeil à la sources et enfin
trouvé quelque chose qui s'appelle INetworkQueryService. Je suppose que vous pouvez faire
de même que l'android les paramètres de mise en œuvre et d'interagir avec ce
service. Quelques conseils par le biais de NetworkSettings.java:
- onCreate commence le NetworkQueryService et le lie.
- loadNetworksList() indique le service de requête pour les opérateurs de réseau.
- INetworkQueryServiceCallback est évalué et, si l'événement "EVENT_NETWORK_SCAN_COMPLETED" a été soulevée, networksListLoaded sera
appelé pour itérer sur tous les Réseaux disponibles.
2.- Même une lecture rapide de NetworkSetting.java et INetworkQueryService interface, nous donne une idée de la réalisation de votre objectif.
- Connectez le service de déclaration.
/**
* Service connection code for the NetworkQueryService.
* Handles the work of binding to a local object so that we can make
* the appropriate service calls.
*/
/** Local service interface */
private INetworkQueryService mNetworkQueryService = null;
/** Service connection */
private final ServiceConnection mNetworkQueryServiceConnection = new ServiceConnection() {
/** Handle the task of binding the local object to the service */
public void onServiceConnected(ComponentName className, IBinder service) {
if (DBG) log("connection created, binding local service.");
mNetworkQueryService = ((NetworkQueryService.LocalBinder) service).getService();
// as soon as it is bound, run a query.
loadNetworksList();
}
/** Handle the task of cleaning up the local binding */
public void onServiceDisconnected(ComponentName className) {
if (DBG) log("connection disconnected, cleaning local binding.");
mNetworkQueryService = null;
}
};
- onCreate commence le NetworkQueryService et le lie.
Intent intent = new Intent(this, NetworkQueryService.class);
...
startService (intent);
bindService (new Intent(this, NetworkQueryService.class), mNetworkQueryServiceConnection,
Context.BIND_AUTO_CREATE);
- loadNetworksList() indique le service de requête pour les opérateurs de réseau.
private void loadNetworksList() {
...
// delegate query request to the service.
try {
mNetworkQueryService.startNetworkQuery(mCallback);
} catch (RemoteException e) {
}
displayEmptyNetworkList(false);
}
- INetworkQueryServiceCallback est évaluée:
/**
* This implementation of INetworkQueryServiceCallback is used to receive
* callback notifications from the network query service.
*/
private final INetworkQueryServiceCallback mCallback = new INetworkQueryServiceCallback.Stub() {
/** place the message on the looper queue upon query completion. */
public void onQueryComplete(List<OperatorInfo> networkInfoArray, int status) {
if (DBG) log("notifying message loop of query completion.");
Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_COMPLETED,
status, 0, networkInfoArray);
msg.sendToTarget();
}
};
- Si l'événement "EVENT_NETWORK_SCAN_COMPLETED" a été soulevée, networksListLoaded sera appelé à effectuer une itération sur les Réseaux disponibles.
private void networksListLoaded(List<OperatorInfo> result, int status) {
...
if (status != NetworkQueryService.QUERY_OK) {
...
displayNetworkQueryFailed(status);
displayEmptyNetworkList(true);
} else {
if (result != null){
displayEmptyNetworkList(false);
...
} else {
displayEmptyNetworkList(true);
}
}
}
J'espère que cela aide. Je pense que c'est un défi intéressant, donc je vais peut-être lui donner un essai la prochaine fois que j'ai du temps libre. Bonne chance!