Событие, когда SIM-карта изменена

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

Ответ 1

В принципе, ответ на этот вопрос "Как отслеживать изменение состояния SIM" является правильным ответом на ваш вопрос.

Итак, вы создаете новый класс

package a.b.c;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class SimChangedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(final Context context, final Intent intent) {

         Log.d("SimChangedReceiver", "--> SIM state changed <--");

        // Most likely, checking if the SIM changed could be limited to
        // events where the intent extras contains a key "ss" with value "LOADED".
        // But it is more secure to just always check if there was a change.
    }
}

и адаптируйте свой AndroidManifest.xml для размещения

<!-- put this where your other permissions are: -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- and -->
<application
    android:name="a.b.c...."
    ... >
    <!-- put this somewhere into your application section: -->
    <receiver android:name="a.b.c.SimChangedReceiver">
        <intent-filter>
            <action android:name="android.intent.action.SIM_STATE_CHANGED"/>
        </intent-filter>
    </receiver>
</application>

Как обычно на Android нет гарантий, что он работает ни на какой версии, ни на каких-либо производителях.

Ответ 2

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

Здесь приведены сведения о доступе к данным SIM-карты: Доступ к SIM-карте с помощью приложения для Android?

Ответ 3

Сохраните сохраненный идентификатор SIM-карты и каждый раз, когда телефон переходит из состояния AirplaneModeON в AirplaneModeOFF, проверьте, совпадает ли новый идентификатор SIM-карты с сохраненным ранее.

Отметьте этот ответ, чтобы узнать, как определить режим полета.

Надеюсь, это ответит на ваш вопрос.

Ответ 4

Вы должны зарегистрировать BroadcastReceiver, чтобы получить действие android.intent.action.SIM_STATE_CHANGED.

Это действие включено в com.android.internal.telephony.TelephonyIntents.java и не может быть найдено в документации на Android. Когда вы его получили (например, подключили SIM-карту), добавьте Sim State с ключом ss.