3

Android のアプリで国、MCC などのテレフォニー値を信頼できるかどうかを知りたいです。setprop を使用して実行中に変更できますか? setprop を使用して変更しようとしましたが、うまくいかないようでした。私の理解では、テレフォニー マネージャーは、GSM または CDMA のハードウェア構成を表すクラス/インターフェイスです。GSM の場​​合、これは sim であり、CDMA の場合はハードウェアである可能性があります。私の質問は次のとおりです。

  • 両方のケースでこれらの値を初めて更新したのは誰ですか?
  • これらの値は OS によって読み取り専用として保存されますか?
  • ユーザーが別の国または地域に旅行した場合、国コードや MCC 値などの一部の値は自動的に更新されますか?
  • これらの値をリセットできますか?

これらの値を変更するつもりはありませんが、その動作を理解したいです! 誰かがこれについて私を助けてくれれば幸いです。

4

3 に答える 3

2

アンドロイドのドキュメントによると

デバイス上のテレフォニー サービスに関する情報へのアクセスを提供します。アプリケーションは、このクラスのメソッドを使用して、テレフォニー サービスと状態を判断したり、一部の種類の加入者情報にアクセスしたりできます。アプリケーションは、テレフォニー状態の変化の通知を受信するリスナーを登録することもできます。

TelephonyManager は、電話情報の読み取りに使用されます。MCC および MNC コードに関するご質問について: はい、電話が他の国にある場合は変更されます。これらのイベントを受信するためにサブスクライブし、そのユーザーが現在別の国にいることを確認できます。

于 2012-07-18T22:15:43.170 に答える
1

@Bo CDMA の仕組みは GSM とは異なります。CDMA には、常に 1 つのホーム ベースと多くの訪問者ベースの場所があります。また、CDMA では信頼できないと見なされる TelephonyManager メソッドを使用して、ビジター Operator についていつでも知ることができます。

于 2012-07-31T19:19:47.910 に答える
0

私も答えとしてそれを追加することにしました...

CDMA電話でこの問題に取り組む方法を見つけました.CDMA電話の場合、電話には常にGSMのSIMカードに匹敵するICCハードウェアがあります。ハードウェアに関連付けられたシステム プロパティを使用するだけです。プログラムでは、Java リフレクションを使用してこの情報を取得できます。これは、GSM デバイスとは異なり、システムがルート化されていても変更できません。Class c=Class.forName("android.os.SystemProperties"); メソッド get = c.getMethod("get", String.class); String homeOperator = ((String) get.invoke(c, "ro.cdma.home.operator.numeric"));

于 2012-09-21T22:14:55.097 に答える