2017-04-25 3 views
0

Ici, j'ai fait application qui écoute chaque SMS reçoit, puis envoyer des SMS selon la condition définir. Cette application fonctionne parfaitement sans problème pour un temps limité. Mais après une longue période d'inactivité de l'application (c'est-à-dire 12 heures), il n'envoie pas de SMS pour les récepteurs SMS. Pendant cette inactivité, l'utilisateur utilise son téléphone portable pour effectuer un appel mais ne fait rien avec l'application. Si je vois le statut de l'info de l'application, il montre que l'application est en cours d'exécution. Comme cela fonctionne bien au début, mais plus tard, il n'y a pas de réponse donc il semble que le code n'a aucun problème. aidez-moi s'il vous plaît à comprendre ce problème. Toute suggestion d'expert est la bienvenue.Auto SMS ne fonctionne pas après une longue inactivité de l'application

public class IncommingSMS2 extends BroadcastReceiver { 

    public static String phoneNumber; 
    Timer timer = new Timer(); 

    public void onReceive(final Context context, Intent intent) { 
     Bundle bundle = intent.getExtras(); 
     try { 
      if (bundle != null) { 
       Object[] pdusObj = (Object[]) bundle.get("pdus"); 
       for (int i = 0; i < pdusObj.length; i++) { 
        SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 
        phoneNumber = currentMessage.getDisplayOriginatingAddress(); 
        String message = currentMessage.getDisplayMessageBody(); 
        Log.i("SmsReceiver", "senderNum: " + phoneNumber + "; message: "); 

        if (Objects.equals(message, "Where")) { 
         SmsManager smsManager = SmsManager.getDefault(); 
               smsManager.sendTextMessage(phoneNumber, null, "test", null, null); 

        } 

       } // bundle is null 
      } 

     } catch (Exception e) { 
      Log.e("SmsReceiver", "Exception smsReceiver" + e); 
     } 
    } 
    } 

ici j'ai manifeste.

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permiss‌​ion>              
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission‌​> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <receiver android:name=".IncommingSMS2"> 
    <intent-filter android:priority="999"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
    </receiver> 
+1

mis en priorité dans le fichier manifeste – Keerthivasan

+0

Comment L'avez-vous déclaré dans le manifeste? –

+0

Cher Jordy, j'ai un manifeste. simon

Répondre

1

Donnez comme ça dans Android Manifest fichier

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.SEND_SMS"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <receiver android:name=".IncommingSMS2" android:exported="true"> 
      <intent-filter android:priority="999"> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
    </receiver> 

Ainsi, il est a la haute priorité, il fonctionnera après une longue Dans l'activité d'application

+0

@Keerthisvasan cela a déjà été mis en œuvre haute priorité à l'exclusion du code android: exporté = "true". Je vais ajouter cette ligne et vous laisser savoir merci. – simon

+0

@simon Got l'OP ah – Keerthivasan