Двойная 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
.)