web-dev-qa-db-ja.com

AndroidアプリケーションでSIMカードにアクセスしますか?

AndroidアプリケーションでSIMカードにアクセスできるかしら

13
Adrien

あなたはこのようにIMEIを得ることができます(しかしそれはあなたが望むものですか?)、単なる例です:

_mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String imei = mTelephonyMgr.getDeviceId();
_

同様に、あなたは

_String getSimCountryIso():
_

SIMプロバイダーの国コードに相当するISO国コードを返します。

String getSimOperator():SIMのプロバイダーのMCC + MNC(モバイル国コード+モバイルネットワークコード)を返します。

String getSimOperatorName():サービスプロバイダー名(SPN)を返します。

String getSimSerialNumber():該当する場合、SIMのシリアル番号を返します。

int getSimState():デバイスのSIMカードの状態を示す定数を返します。

String getSubscriberId():一意の加入者IDを返します(GSM電話のIMSIなど)。

詳細については、 このページ をご覧ください。

マニフェストに正しい権限を追加することを忘れないでください(getDeviceId() => Requires Permission: READ_PHONE_STATE

9
Hubert

SEEK(Secure Element Evaluation Kit)のSmartCardAPIがなければ、それは不可能です。大多数Android市場で入手可能な電話SmartCardAPIは実装されていません。したがって、SmartCardAPIコードを統合した後に独自のAndroidを構築するか、これでまともな電話を待つかのどちらかです実装用のパッチファイルを見つけることができます ここ

5
Rahul

SmartCard API for Androidはあなたの興味を引くかもしれません: http://code.google.com/p/seek-for-Android/

4
skoetel

SIMカードへのアクセスは、システムアプリケーションでのみ可能です。

SIMカードへの低レベルのアクセスは、サードパーティのアプリでは利用できません。 OSは、SIMカードメモリ上の個人情報(連絡先)へのアクセスを含む、SIMカードとのすべての通信を処理します。また、アプリケーションはATコマンドにアクセスできません。これらはRadioInterface Layer(RIL)によって排他的に管理されているためです。RILはこれらのコマンドに高レベルのAPIを提供しません。

ソース: https://source.Android.com/security/overview/app-security.html#sim-card-access

2
Robert

Android using Java reflectionの内部APIでIccファイルハンドラーを使用する必要があります。これはframework/base/telephonyにあります。

0
ofskyMohsen

SEEKは最も便利なものですが、大多数Android電話はそれをサポートしていません。したがって、SMSの読み取り(SIMカード内)などの他の方法でSIMカードを評価できるかもしれません。

0
Zichen Liang