2012-10-10 4 views
3

앱을 설치하면 모든 것이 정상적으로 작동합니다. 모바일 화면을 잠글 때까지 메시지를 보낼 때마다 메시지 본문을 인쇄 할 수 있습니다. 그 후에 앱은 수신 메시지 인쇄를 중지합니다. 나는이 문제를 극복하기 위해 여러 가지 방법을 시도했지만 운이 없었다. 당신은, "일시 정지 할 때 의도를받을 수 없습니다"registerReceiver()와 수신기를 등록 할 때 ... BroadcastReceiverdocs모바일 화면 잠금 때 브로드 캐스트 수신기가 실행되지 않음

public class SmsReceiveActivity extends Activity{ 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sms); 

receiver = new BroadcastReceiver() { 

@Override 
public void onReceive(Context context, Intent intent) { 

if (intent.getAction().equals(SMS_RECEIVED)) { 
Object[] pdus = (Object[]) bundle.get("pdus"); 
final android.telephony.SmsMessage[] messages = new android.telephony.SmsMessage[pdus.length]; 

for (int i = 0; i < pdus.length; i++) { 
    messages[i] = android.telephony.SmsMessage.createFromPdu((byte[]) pdus[i]); 
    incomingMsgString += messages[i].getMessageBody().toString(); 
    } 
    // Print Incoming message Body 
    } 
} 
}   
    getApplication().registerReceiver(receiver, new IntentFilter(SMS_RECEIVED)); 
} 
} 

답변

3

을 도와주세요. 활동과 독립적 인 수신자를 원한다면 명명 된 클래스로 구현하고이를 매니페스트에 게시해야합니다. 예를 들어, 익명 BroadcastReceiver

public class MyReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

if (intent.getAction().equals(SMS_RECEIVED)) { 
Object[] pdus = (Object[]) bundle.get("pdus"); 
final android.telephony.SmsMessage[] messages = new android.telephony.SmsMessage[pdus.length]; 

for (int i = 0; i < pdus.length; i++) { 
    messages[i] = android.telephony.SmsMessage.createFromPdu((byte[]) pdus[i]); 
    incomingMsgString += messages[i].getMessageBody().toString(); 
    } 
    // Print Incoming message Body 
    } 
} 
} 

그리고 매니페스트의 SMS 메시지가 당신의 onReceive 방법을 수신 할 때

<receiver android:name=".MyReceiver" > 
    <intent-filter> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/ > 
    </intent-filter> 
    </receiver> 

그런 다음 application 태그 안에 수신기를 추가

가 호출됩니다로 명명 된 클래스를 생성 . 여기에서 필요한 정보를 패키지화하고 추가 처리를 위해 Activity 또는 Service에 인 텐트를 시작할 수 있습니다.

+0

왜 우리는 이것을하고 있습니까? - SmsMessage [] 메시지. 왜 배열인가? 여러 SMS를위한 것입니까? – Ashwin

관련 문제