2016-07-18 22 views
1

私は次のようにTelephonyManagerからiccExchangeSimIOにアクセスしようとしています:アクセスTelephonyManager方法iccExchangeSimIO

TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
byte[] uiccFileReadResponse = mTelephonyManager.iccExchangeSimIO(0x6F07,B0,0x00,0x00,0x09,"3F007FF06F07"); 

を私はuiccFileReadResponseに成功応答を取り戻すことができていますが、数秒後にシステムがACTION_UNSOL_RESPONSE_OEM_HOOK_RAW意図をブロードキャストし、デバイスが行きます緊急コールバックモードに切り替えます。

このモードを終了する唯一の方法は、電源を切ることです。

私のデバイスはルーツであり、私にはMODIFY_PHONE_STATEの許可があります。

誰かがこの問題について私を導くことができれば嬉しいです。

+0

Hummm ... SimcardのIMSIを読んだ:) – W0rmH0le

+0

はい...とき電話が緊急の状態になると、私がAPDUのために返す唯一の応答は6F00です。:( – AndroidUser

答えて

1

まあ..

あなたは携帯電話は緊急専用モードに入っている理由を確認するにはRILログ(adb logcat -b radio)を確認することができます。おそらく、CP側(通信プロセッサ)で何らかのエラーがあります。

エラーがRIL側にある場合、デバッグすることはできますが、エラーがCP側にある場合、CPログなしで修正するのは難しいでしょう(App側から修正可能な場合)。 CPログがないと、何がうまくいかないのか、それぞれのデバイスが異なるチップセット(クアルコム、マーベル、インフィニオン、Broadcom(RIP)など)を使用するのは難しいです...

さまざまなデバイスでテストしてくださいその結果...

私はそれが可能であるかどうかわからないんだけど...しかし、あなたはTelephonyManager..getSubscriberId()経由でIMSIを取得することができます。

TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String mIMSI = mTelephonyManager.getSubscriberId(); 
関連する問題