Двойная сим-карта Android
У кого-нибудь был опыт программирования выбора SIM-карты, когда в телефоне используется двойной SIM-адаптер?
Спасибо, STEN
Добавлено позже: я нашел приложение MultiSim на Android Market, которое в своем описании написало, что "... пользователи аналоговых сдвоенных sim-адаптеров могут переключать свои сим-карты...", так что есть какой-то API в Android SDK, который позволяет переключение / выбор SIM-карты?
4 ответа
Текущая платформа Android не поддерживает несколько SIM-карт. Устройство с такой поддержкой было настроено для этого, поэтому вам нужно будет получить информацию от производителя этого устройства для любых средств, с которыми им приходится взаимодействовать.
Поскольку никто еще не упомянул об этом, Android наконец-то добавил официальную поддержку мультисим на Android 5.1.
Но если ваше приложение предназначено только для этого API (который в настоящее время составляет менее 0,5% рынка), вы сами по себе с более неясными решениями, упомянутыми в других ответах.
Пожалуйста, обратитесь к этой статье Android Dual Sim. Если вы будете следовать этому направлению, я думаю, что вы можете сделать это, даже если текущий Android-API не поддерживает мобильные устройства с двумя сим-картами.
Для смс:
Предполагая, что вы разрабатываете приложение для своего телефона, и вы готовы столкнуться с проблемой выяснения идентификаторов (sim_id
), назначенный каждой из ваших SIM-карт (возможно, путем проверки выходов журнала телефона, поиска sim_id
, что я и сделал), вы можете использовать следующий код для установки SIM-карты по умолчанию для отправки SMS:
int simId = <place desired SIM ID here>;
Intent simIntent = new Intent("android.intent.action.SMS_DEFAULT_SIM");
simIntent.putExtra("simid", simId);
sendBroadcast(simIntent);
В сочетании с некоторыми другими подсказками пользовательского интерфейса (для "выбора" предпочитаемой SIM-карты) это должно сработать.
Я не совсем уверен, что этот подход будет работать для вас (хотя код кажется независимым от производителя); Я понял это методом проб и ошибок на моем Mlais MX28 (с настроенным ПЗУ). Но это все еще стоит выстрел, я полагаю.:)
ОБНОВЛЕНИЕ: странно, решение перестало работать неожиданно после нескольких обновлений приложения, над которым я работал. Но я наткнулся на другой путь (который кажется более перспективным). (Я считаю, что это может быть расширено и для других сценариев выбора SIM-карты, поскольку кэш настроек содержит записи с name
s gprs_connection_sim_setting
, voice_call_sim_setting
, video_call_sim_setting
и тому подобное.)
ContentValues val = new ContentValues();
val.put("value", "here goes the preferred SIM ID");
getContentResolver().update(Uri.parse("content://settings/system"), val, "name='sms_sim_setting'", null);
(К сожалению, это требует android.permission.WRITE_SETTINGS
разрешение).