2010-04-14 10 views
6

La mia applicazione Android deve reagire in modo diverso a diversi codici di paese mobile.Come si modifica il codice paese mobile (MCC) nell'emulatore Android?

Sembra che sia codificato su mcc310 (US). Riesco a leggere questo valore dal TelephonyManager.getSimCountryIso() o utilizzando una cartella risorsa come res/values-mcc123/ ma come faccio a impostare questo valore nell'emulatore?

risposta

0

sull'emulatore: andare in Impostazioni-> Wireless e Rete-> mobile Rete-> Nomi punti di accesso. Prova a cambiare il valore del Centro clienti nell'APN impostato, quindi prova il tuo codice.

+0

Buona idea, ma non ha funzionato.Quando ho provato questo APN è scomparso dalla lista e la mia applicazione non ha più potuto accedere alla rete. – neu242

+0

Beh, nel mio caso l'APN è scomparso e ho ricevuto: "Nessuna connessione di rete" quando ho acceso il browser. Ma quando ho dato l'allarme, sono stato in grado di navigare in internet. Strano comportamento. Ad ogni modo, puoi fare un "Reset to Default" nella pagina APN e riavere il tuo precedente APN. – Samuh

0

so che basandosi su un MCC non è sempre corretto in tutti i paesi. Per esempio, Digicell usa un MCC + MNC in diversi paesi. Comprendi anche che l'intera idea di un MCC è piuttosto ridicola dal punto di vista della rete. È piuttosto irrilevante sapere se sei se entrambe le volte siete su T-Mobile con un AT & T portatile in Germania o nei Paesi Bassi.

+0

Anche se sono completamente d'accordo con questo, questo non risponde alla domanda vera e propria. –

0

Non sembra possibile modificare MCC/MNC tramite le impostazioni dell'emulatore Android, ogni volta che si tenta di tentare l'APN "T-Mobile" preconfigurato scompare dall'elenco e la connettività di rete viene persa. Ho persino fatto in modo che l'emulatore si riavvii spontaneamente dopo una modifica.

Il modo programmatico non funziona neanche, l'APN scompare subito dopo:

[email protected]_x86:/ # content update --uri content://telephony/carriers/ --bind name:s:'TheAPN' --bind apn:s:apn.operator.net --bind numeric:i:12345 --bind user:s: --bind password:s: --bind server:s: --bind proxy:s: --bind mmsproxy:s: --bind mmsc:s: --bind type:s: --bind mcc:i:123 --bind mnc:i:45 --bind current:i:1 --where _id=1 

potrebbe essere possibile hacking l'emulatore con le stesse modalità che permettono di cambiare il MSISDN o IMEI, però.

0

Modifica MCC + MNC nell'emulatore può essere fatto solo con ADB. Per cambiare la MCC + MNC nell'emulatore, connettersi al ADB effettuare le seguenti operazioni

adb -s 127.0.0.1:53001 shell 

Poi inserire il codice paese ci. 23801 è il codice coutry danese.

setprop persist.<name of the emulator>.mccmnc 23801 

Per Droid4X emulatore, è

setprop persist.droid4x.mccmnc 23801 

Riavviare l'emulatore.

+0

La proprietà è impostata, ma non penso che funzioni: TelephonyManager non legge questa proprietà quando restituisce getSimCountryIso() afaik –

+0

funziona bene per Droid4x – prouser135

7

di cambiare ciò che TelephonyManager.getSimCountryIso() rendimenti, è sufficiente eseguire

adb shell setprop gsm.sim.operator.iso-country no 

e ora restituisce no (Norvegia).

Se si vuole cambiare ciò che TelephonyManager.getSimOperator() rendimenti (MCC + MNC) poi eseguire

adb shell setprop gsm.sim.operator.numeric 24201 

e si sono modificati MCC a 242 (Norvegia) e MNC a 01 (Telenor).

per vedere quali altre proprietà che è possibile modificare quindi eseguire

adb shell getprop 

Questa è verificato per lavorare su entrambi AVD e Genymotion. Tuttavia, questo non cambia queste proprietà in modo persistente.

+0

Funziona! Ottimo consiglio anche controllando quali puntelli possono essere impostati! Grazie – speedynomads

+0

questo non funziona per me, se faccio un getprop subito dopo setprop continuo a ricevere "noi". Qualche idea del perché? –

+0

@AlexandruCristescu Questo è su un emulatore? –