Двойной сим-Android

Есть ли способ, которым я могу получить доступ к другому симу в моем андроиде? У меня есть Android-андроид Cherry Mobile Orbit, который является телефоном с двумя сим-телефонами. Я хочу разработать приложение для SMS для своего телефона, но только первый сим будет доступен. Я хочу получить доступ к другому симу, так что, когда я нажимаю Enter, чтобы отправить сообщение, появится приглашение, на которое будет отправлено сообщение. Я знаю, что он проприетарный, но у производителя телефона нет обратной связи об этом. Есть ли другой путь? настройка или что-то?

Ответ 1

Я думаю, вы можете использовать dex2jar или apktool, чтобы отменить это приложение, которое работает на устройствах с двумя сим-картами, после того, как вы нашли связанный "менеджер сервисов", "менеджер телефонии", какой-либо заглушки интерфейса или некоторые ключевые слова типа "Близнецы", вы можете использовать Java Reflection, отражая весь метод этого класса. Тогда вы можете достичь этой цели.

Ответ 2

Официально прямо сейчас нет API для поддержки этого, вам нужно связаться с производителем устройства.

Ответ 3

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