Двойная SIM-карта Android

У кого-нибудь был опыт программирования выбора SIM-карты, когда в телефоне используется двойной SIM-адаптер?

Спасибо, Стен


Добавлено позже: Я нашел приложение MultiSim на Android Market, в котором описано, что "... Пользователи аналогового двойного sim-адаптера могут переключать свои сим-карты...", так есть ли какой-нибудь API в Android SDK, который позволяет переключаться/выбирать SIM-карту?

Ответ 1

Текущая платформа Android не поддерживает несколько SIM-карт. Устройство с такой поддержкой было настроено для этого, поэтому вам нужно будет получить информацию от этого производителя устройства для любых объектов, с которыми им нужно взаимодействовать.

Ответ 2

Поскольку никто еще не упомянул об этом, Android наконец добавил официальную поддержку multisim на Android 5.1.

Но если ваше приложение не нацелено только на этот API (который в настоящее время составляет менее 0,5% рынка), вы сами по себе с более неясными решениями, упомянутыми в других ответах.

Ответ 3

Обратитесь к этой статье Dual Sim Android. Если вы будете следовать этому направлению, я думаю, вы можете это сделать, даже если текущий Android-авио не поддерживает мобильные устройства с двумя сим-картами.

Ответ 4

Для SMS:

Предполагая, что вы разрабатываете приложение для своего собственного телефона, и вы готовы решить проблему идентификации идентификаторов (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 (с настроенным ПЗУ). Но, по-моему, это все равно стоит.:)

UPDATE: Как ни странно, решение перестало работать неожиданно после нескольких обновлений приложения, над которым я работал. Но я столкнулся с другим путем (что представляется более перспективным). (Я считаю, что это может быть расширено и для других сценариев выбора SIM-карты, так как кеш настроек содержит записи с name 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.)