2017-04-25 27 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); 
     } 
    } 
    } 

여기에 나와 있습니다. 안드로이드 매니페스트에 따라서

<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

친애하는 조디, 여기에 내가 명시했다. <사용 권한 android : name = "android.permission.READ_SMS"/> <사용 권한 android : 이름 = "android.permission.RECEIVE_SMS" InbuySMS2 "> <인보이스 앤드 로이드 : 이름 ="IncommingSMS2 "> <인벤토리 필터 android : 우선 순위 = "999"> <액션 안드로이드 : 이름 = "android.provider.Telephony.SMS_RECEIVED"/> simon

답변

1

, 그것은 높은 우선 순위를 가지고있어 그렇게주고, 다음은 응용 프로그램의 활동에서 후 긴 작동

+0

@Keerthisvasan이 코드는 android : exported = "true"코드를 제외하고 이미 우선 순위가 높습니다. 나는이 줄을 추가하고 너에게 고마워 할 것이다. – simon

+0

@imon OP 아를 얻었다. – Keerthivasan