2013-12-20 3 views
2

나는 내 이슈를 며칠 동안보고 있습니다. 사실 내가 원하는 것은 사용자가 애플리케이션에서 벗어난 경우에도 사용자에게 경고를 제공하는 알림 서비스를 만드는 것입니다. 그리고 그 서비스는 매 5 분마다 수신 메시지를 확인해야합니다. 알림은 알림 서랍의 알림받은 편지함 스타일과 정확히 동일해야합니다. 알림을 클릭하여 특정 활동을 호출해야합니다. 아무도 나에게 그것을하는 법을 제안 할 수 있냐? 도움을 주셔서 감사합니다 ....서비스를 사용하는 수신 문자 메시지에 대한 알림

+0

새 메시지를 수신하기 위해 broadcastReceiver를 등록한 다음 작업을 수행 할 서비스를 시작해야합니다. –

+0

@Rohan Kandwal, 서비스가 자동으로 실행됩니까? 우리는 어떻게 broadcastReceiver에 등록 할 수 있습니까? 어떤 코드를 제공하십시오 .. – user3057567

+0

5 분마다 수신 메시지를 확인할 필요가 없습니다. 내가 제공 한 코드는 들어오는 메시지를 자동으로 감지합니다. –

답변

0

먼저 SMS를 받고 읽는 데 필요한 사용 권한이 필요합니다. 다음 코드를 사용하여 androidManifest.xml에서 할 수있는 : -

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.sms" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="8" /> 

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

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <receiver android:name=".SMSBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
    </receiver> 

</application></manifest> 

은 그럼 당신은 수신 SMS의 통지를받을 브로드 캐스트 리시버를 설정해야합니다.

public class SMSBroadcastReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    SmsMessage[] msgs = null; 
    String str = "no message received"; 
    if(bundle != null){ 

     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 
     for(int i=0; i<msgs.length;i++){ 

      msgs[i]= SmsMessage.createFromPdu((byte[])pdus[i]); 
      str += "SMS from Phone No: " +msgs[i].getOriginatingAddress(); 
      str +="\n"+"Message is: "; 
      str += msgs[i].getMessageBody().toString(); 
      str +="\n"; 
     } 

     Log.v("Debug", str); 
     Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
    } 
}} 

위의 코드는 당신에게 SMS를 보낸 사람의 연락처 번호와 수신 된 메시지가 표시됩니다.

+0

이제받은 SMS 서비스가 필요하다면 onReceive()에서 서비스를 시작할 수 있습니다 –

+0

@ user3057567 서비스에서 정확히 원하는 것을 모른다는 사실 외에도, 나는하지 않을 것입니다 너의 숙제. 그래서 당신이 일을하지 않는 어떤 문제에 직면했을 때 당신을 돕기위한 것입니다. 혼자 힘으로 시도해보십시오. 문제가 발생하면 도움을 드리겠습니다. –

+0

@ user3057567 그리고 몇 가지 참고로, 당신을 도운 도움이되는 답변이 있으면 그것을 upvote하십시오 그리고 당신의 문제를 해결 한 경우 올바른 답변을 표시하십시오. 해피 코딩 !!! –