2016-12-13 8 views
0

Android開発の初心者です。私は、ネットワーク情報を表示する必要があるアプリケーションを作成しようとしています。その目的は、私のAndroid 6.0デバイスのためにdual sim networkの情報を取得しますが、私はJelly Bean(Android 4.2)でデュアルSIMネットワーク情報を取得できません。Jelly Bean(Android 4.2)でデュアルシムネットワーク情報を取得する際の問題

 private void GetDeviceImIeBySlot(int simSlotNum) 
    { 
     TelephonyManager telemamanger = (TelephonyManager)GetSystemService(Context.TelephonyService); 

     Class telephonyClass = Class.ForName(telemamanger.Class.Name); 
     //Java.Lang.Reflect.Method[] methods = telephonyClass.GetMethods(); 

     Class[] parameter = new Class[1]; 

     parameter[0] = Java.Lang.Integer.Type; 
     Java.Lang.Reflect.Method getSimID = telephonyClass.GetMethod("SimOperatorName", parameter); 

     Java.Lang.Object[] obParameter = new Java.Lang.Object[1]; 
     obParameter[0] = simSlotNum; 
     Java.Lang.Object ob_phone = getSimID.Invoke(telemamanger, obParameter); 
     string imsi2 = ob_phone.ToString(); 
     // MessageBoxAndroid.Show(this, "this is " + imsi2); 
    } 

この問題の解決方法を教えてください。

答えて

0
あなたが作ることができ、それは、Android 6.0デバイスを動作する方法がわからない、私はあなたのコードをテストするために、すべてのエラーでクラッシュしたアンドロイド6.0、4.4および4.2のエミュレータを使用

Java.Lang.NoSuchMethodException: SimOperatorName [int]

コード行で: Java.Lang.Reflect.Method getSimID = telephonyClass.GetMethod("SimOperatorName", parameter);

だけで、私は、することができます。このような単純にコードを、あなたはSIMのプロバイダのMCC + MNC(モバイル国番号+モバイルネットワークコード)を取得したいと仮定し、あなたのコードを見て:

TelephonyManager telemamanger = (TelephonyManager)GetSystemService(Context.TelephonyService); 
var simoperator = telemamanger.SimOperator; 

は、たとえば、他の多くの性質があなたのケースのために有用である可能性があります。

var simoperatorName = telemamanger.SimOperatorName; 
var simserialNumber = telemamanger.SimSerialNumber; 
var netoperator = telemamanger.NetworkOperator; 
var netoperatorName = telemamanger.NetworkOperatorName; 
var nettype = telemamanger.NetworkType; 

は、あなたは彼らとTelephonyManager Classでいくつかの他のプロパティ、メソッドやフィールドを見つけることができます。

関連する問題