Как получить доступ к событию, когда 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
.