15

私の Android アプリケーションは、異なるモバイル国コードに対して異なる反応をする必要があります。

mcc310 (US)にハードコーディングされているようです。TelephonyManager.getSimCountryIso()この値は、リソース フォルダーから、またはリソース フォルダーを使用して読み取ることができますres/values-mcc123/が、エミュレーターでこの値を設定するにはどうすればよいですか?

4

6 に答える 6

15

返されるものを変更するTelephonyManager.getSimCountryIso()には、単に実行します

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

no (ノルウェー) を返すようになりました。

TelephonyManager.getSimOperator()返されるもの (MCC + MNC)を変更する場合は、実行します。

adb shell setprop gsm.sim.operator.numeric 24201

MCC を 242 (ノルウェー) に、MNC を 01 (Telenor) に変更しました。

変更できる他のプロパティを確認するには、実行します

adb shell getprop

これは、AVD と Genymotion の両方で動作することが確認されています。ただし、これらのプロパティが永続的に変更されるわけではありません。

于 2016-05-27T13:02:29.020 に答える
3

このプロパティの値は、API レベルによって異なることがわかりました。私はこの問題に対処しようとしました。

次のコマンドを使用して、API 26 の値を変更できます。

  1. adb shell
  2. su
  3. setprop gsm.operator.numeric 280701

注:一部のエミュレーターでは再起動が必要です。

一部のエミュレーターでは、プロパティの名前が異なる場合があります

プロパティ名は次のように見つけることができます。

  1. adb shell
  2. getprop

次のようなデータが得られます。

...
[dalvik.vm.lockprof.threshold]: [500]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[dalvik.vm.usejit]: [true]
[dalvik.vm.usejitprofiles]: [true]
[debug.atrace.tags.enableflags]: [0]
[debug.force_rtl]: [0]
[dev.bootcomplete]: [1]
[drm.service.enabled]: [true]
[gsm.current.phone-type]: [1]
[gsm.defaultpdpcontext.active]: [true]
[gsm.network.type]: [LTE]
[gsm.nitz.time]: [1524141151210]
[gsm.operator.alpha]: [Android]
[gsm.operator.iso-country]: [us]
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: [310260]
[gsm.sim.operator.alpha]: [Android]
[gsm.sim.operator.iso-country]: [us]
[gsm.sim.operator.numeric]: [310260]
[gsm.sim.state]: [READY]
[gsm.version.baseband]: [1.0.0.0]
[gsm.version.ril-impl]: [android reference-ril 1.0]
[hwservicemanager.ready]: [true]
[init.svc.adbd]: [running]
[init.svc.audio-hal-2-0]: [running]
[init.svc.audioserver]: [running]
[init.svc.bootanim]: [stopped]
[init.svc.camera-provider-2-4]: [running]
[init.svc.cameraserver]: [running]
...

numeric出力をテキストファイルにコピーして検索します。プロパティ名を取得して使用するsetprop <property name> <new MCC MNC>

getPropを使用して、値が変更されたかどうかを確認することもできます。

于 2018-04-19T13:15:41.593 に答える
0

エミュレータで MCC+MNC を変更するには、ADB を使用する必要があります。エミュレータで MCC+MNC を変更するには、ADB に接続して次の手順を実行します。

adb -s 127.0.0.1:53001 shell

次に、そこに国コードを入力します。23801 はデンマークの国番号です。

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

Droid4X エミュレータの場合は、

setprop persist.droid4x.mccmnc 23801

エミュレータを再起動します。

于 2015-11-10T15:08:07.027 に答える
0

エミュレーターの場合: [設定] -> [ワイヤレスとネットワーク] -> [モバイル ネットワーク] -> [アクセス ポイント名] に移動します。設定した APN の MCC 値を変更してから、コードを試してください。

于 2010-04-14T14:31:26.467 に答える
0

Android エミュレーターの設定で MCC/MNC を変更することはできないようです。これを試みるたびに、事前に構成された「T-Mobile」APN がリストから消え、ネットワーク接続が失われます。変更後にエミュレーターが自発的に再起動することさえありました。

プログラムによる方法も機能しません。APN は直後に消えます。

root@generic_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

ただし、 MSISDNまたはIMEIを変更できるのと同じ方法でエミュレーターをハッキングすることで可能になる可能性があります。

于 2015-08-26T10:10:07.270 に答える
0

MCC に依存することがすべての国で常に正しいとは限らないことを知っておいてください。たとえば、デジセルは複数の国で 1 つの MCC+MNC を使用します。また、ネットワークの観点から見ると、MCC の全体的な考え方はばかげていることも理解してください。AT&T ハンドセットで T-Mobile を使用している場合、ドイツにいるのかオランダにいるのかを知ることはあまり関係ありません。

于 2010-05-18T00:40:13.797 に答える