私はデュアルSIMのAndroid携帯を持っています。着信メッセージを問題なく読み取るカスタムブロードキャストレシーバーを使用しています。どのシムがメッセージを受信したかを知る方法があるのだろうか。
2223 次
2 に答える
1
TelephonyManagerを使用して、アクティブなシムの情報を取得できます。たとえば、シリアル番号です。
TelephonyManager telephoneMgr = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
String simSerial = telephoneMgr.getSimSerialNumber();
また、line1Numberを取得することもできます。ネットワーク事業者が番号を入力した場合は、SMSメッセージのto>フィールドで取得した番号と比較できます。
String phoneNumber = telephoneMgr.getLine1Number();
それが役に立てば幸い
于 2012-12-17T13:28:24.147 に答える
0
私はこの問題に本当に苦労し、最終的に解決策を見つけましたが、APIレベル22より上でしかテストしませんでした。
受信したインテントの追加情報を確認する必要があります。私の場合、インテントの追加バンドルには、「スロット」と「サブスクリプション」という2つの便利なキーがあります。
次に例を示します。
public class IncomingSms extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
Bundle bundle = intent.getExtras();
int slot = bundle.getInt("slot", -1);
int sub = bundle.getInt("subscription", -1);
/*
Handle the sim info
*/
}
}
私はこれに関するドキュメントを見つけられなかったので、これはデバイス/メーカーに依存する可能性があります。キーが異なるか、そのようなものであると想像できます。これは、バンドルのキーセットをダンプすることで確認できます。
Set<string> keyset = bundle.keySet();
于 2016-08-11T12:43:42.850 に答える