/ / Chcę sprawdzać stan karty SIM przy każdym uruchomieniu urządzenia z Androidem - Android, karta SIM

Chcę sprawdzać stan karty SIM przy każdym uruchomieniu urządzenia z Androidem - Android, karta SIM

Piszę aplikację, która automatycznie wysyławiadomość SMS po wymianie mojej istniejącej karty SIM na nową kartę SIM. Mogę użyć identyfikatora abonenta karty SIM, aby to sprawdzić, ale jak to sprawdzam przy każdym uruchomieniu urządzenia z Androidem. dzięki...

Odpowiedzi:

3 dla odpowiedzi № 1

Napisz startowy odbiornik emisji. Działa to przy każdym uruchomieniu urządzenia. Dodaj do swojego manifestu następujące zamiary:

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

z czymś takim jak następujący kod:

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

0 dla odpowiedzi nr 2

Odpowiedź dhaag23 obejmuje konfigurację odbiornika startowego. Nie wspomina jednak, że aplikacja musi mieć uprawnienia do rozruchu kompletnego lub cokolwiek innego na temat wymagań karty SIM

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

Aby sprawdzić wartość karty SIM, skonfigurowałem dozapisz numer telefonu urządzenia w ustawieniach aplikacji. Pamiętaj, że może to zostać usunięte przez użytkownika w ustawieniach aplikacji i musisz ostrożnie obsłużyć przypadek pierwszej inicjalizacji. W przypadku wykrycia niezgodności z bieżącym numerem telefonu i wcześniej zapisaną wartość w ustawieniu, możesz stwierdzić, że jest to nowa karta SIM.

Oto metoda, której używam do uzyskania bieżącego numeru telefonu:

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

Metoda uzyskania numeru seryjnego karty SIM.

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

Jeśli istnieje sposób, aby to wyraźnie sprawdzićobecność nowej / brakującej karty SIM, nie jestem pewien, co to jest. Metoda, którą mam powyżej, aby uzyskać numer telefonu, najwyraźniej nie jest niezawodna u wszystkich operatorów. Ponadto uzyskanie numeru seryjnego SIM działa tylko na telefonach z kartą SIM.