2010-12-10 10 views

Répondre

3

Écrivez un récepteur de diffusion de démarrage. Cela s'exécute chaque fois que l'appareil démarre. Ajouter l'intention à votre manifest:

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

avec quelque chose comme le code suivant:

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

La réponse de dhaag23 couvre comment mettre en place un récepteur de démarrage. Cependant, il ne mentionne pas que l'application doit avoir Boot autorisation complète, ou quoi que ce soit au sujet de votre carte SIM exigence

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

Pour vérifier la valeur de la carte SIM, je l'ai mis en place pour stocker le numéro de téléphone de l'appareil dans un paramètre de l'application. Notez que cela peut être effacé par l'utilisateur dans les paramètres de l'application, et vous devez gérer soigneusement le cas de la première initialisation. Si vous détectez une non-concordance entre le numéro de téléphone actuel et la valeur précédemment enregistrée dans le paramètre, vous pouvez conclure qu'il s'agit d'une nouvelle carte SIM.

est ici la méthode que je l'utilise pour obtenir le téléphone actuel #:

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

méthode pour obtenir série SIM.

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

S'il y a un moyen de vérifier explicitement l'prescence d'une nouvelle/manquante carte SIM, je ne suis pas sûr de ce qu'il est. La méthode que j'ai ci-dessus pour obtenir le numéro de téléphone n'est apparemment pas fiable sur tous les transporteurs. En outre, l'obtention de la série SIM fonctionne uniquement sur les téléphones à carte SIM.