2017-04-25 8 views
0

ここでは、すべてのSMSを受信し、条件定義に従ってSMSを送信するアプリを作った。このアプリは限られた時間で問題なく完全に動作します。しかし、アプリの長時間使用していない(つまり12時間)と、SMS受信者はSMSを送信しません。この非アクティブ期間中、ユーザーは携帯電話を使用して電話をかけていますが、アプリでは何もしません。アプリ情報ステータスが表示されている場合は、アプリが実行中であることが示されます。以来、それは正常に動作しますが、後では応答がないので、コードのように見えるので問題はありません。この問題を理解するのを助けてください。どのような専門家の提案も大歓迎です。アプリの長時間使用していないと自動SMSが機能しない

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); 
     } 
    } 
    } 

ここに私はマニフェストを持っています。 Androidのマニフェストにそう

<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> 

ファイル

<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

は、マニフェストファイル – Keerthivasan

+0

どのように高い優先度を設定しますあなたはマニフェストでそれを宣言しましたか? –

+0

親愛なるジョーディ、ここに私はマニフェストを持っています。 "use-permission android:name =" android.permission.READ_SMS "/> InbuildSMS2 "> <インテントフィルタandroid:priority> = "999"> <アクションアンドロイド:名= "android.provider.Telephony.SMS_RECEIVED" /> simon

答えて

1

、それは高い優先度を持っているということのように付けて、それはアプリケーションの活動の後に長い動作します

+0

@Keerthisvasanこれは、コードandroid:exported = "true"を除いて既に優先順位が高く実装されています。この行を追加していただき、ありがとうございます。 – simon

+0

@サイモンOPああを得た – Keerthivasan

関連する問題