/ / Ich möchte den SIM-Status jedes Mal überprüfen Android-Gerät starten - Android, SIM-Karte

Ich möchte den SIM-Status jedes Mal überprüfen Android-Gerät Start - Android, SIM-Karte

Ich schreibe eine Anwendung, um automatisch zu sendeneine SMS, wenn ich meine vorhandene SIM-Karte durch eine neue SIM-Karte ersetze. Ich kann die Abonnenten-ID der SIM-Karte verwenden, um dies zu überprüfen, aber wie ich es jedes Mal überprüfen Android-Gerät starten. Vielen Dank...

Antworten:

3 für die Antwort № 1

Schreiben Sie einen Start-Broadcast-Empfänger. Dies wird bei jedem Start des Geräts ausgeführt. Fügen Sie Ihrem Manifest die folgende Absicht hinzu:

    <receiver android:name=".StartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>

mit etwas wie dem folgenden Code:

public class StartupReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent intent = new Intent(...);
context.startActivity(intent );
}
}

0 für die Antwort № 2

Die Antwort von dhaag23 behandelt die Einrichtung eines Startempfängers. Es wird jedoch nicht erwähnt, dass die Anwendung eine Boot-Complete-Berechtigung oder etwas über Ihre SIM-Karten-Anforderung haben muss

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Um den Wert der SIM-Karte zu überprüfen, habe ich eingerichtetSpeichern Sie die Telefonnummer des Geräts in einer App-Einstellung. Beachten Sie, dass dies vom Benutzer in den App-Einstellungen gelöscht werden kann und Sie den Fall der ersten Initialisierung sorgfältig behandeln müssen. Wenn Sie eine Abweichung von der aktuellen Telefonnummer und der vorherigen finden gespeicherten Wert in der Einstellung, dann können Sie daraus schließen, dass es eine neue SIM ist.

Hier ist die Methode, die ich verwende, um die aktuelle Telefonnummer zu erhalten:

public static String getPhoneNumber(Context context) {
TelephonyManager phoneManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber = phoneManager.getLine1Number();
return phoneNumber;
}

Methode um SIM seriell zu bekommen.

public static String getSimSerialNumber(Context context) {
TelephonyManager phoneManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber = phoneManager.getSimSerialNumber();
return phoneNumber;
}

Wenn es eine Möglichkeit gibt, explizit dieVorhandensein einer neuen / fehlenden SIM-Karte, ich bin mir nicht sicher, was es ist. Die Methode, die ich oben habe, um die Telefonnummer zu bekommen, ist anscheinend nicht auf allen Trägern zuverlässig. Außerdem funktioniert die SIM-Seriennummer nur auf SIM-Karten-Telefonen.