2014-09-17 1 views
0

저는 Android SMS를 처음 사용하면서 새로운 것을 공부하려고합니다. 그래서 항상 배경에서 작동하는 안드로이드 앱을 만들려고합니다. "안녕하세요"(SMS로 내 핸드폰에 "안녕하세요"를 보내는 사람)의 콘텐츠로 SMS를 받으면 음악이 재생됩니다. SMS 수신자가 작동하지 않았습니다.

나는 모든 인터넷을 통해 검색하고, 나는 AVD에 근무하는 프로젝트를 구축,하지만 난 내 휴대 전화에서 테스트 할 때 작동하지 않았다 :

import info.kfsoft.android.R.raw; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.TextView; 
import android.widget.Toast; 

public class SMSReceiver extends BroadcastReceiver 
{ 

    MediaPlayer ourSong; 
    //static final int uniqueID=12345; 
    TextView display; 

    public void onReceive(Context context, Intent intent) 
    { 
     NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     ourSong = MediaPlayer.create(context, R.raw.music2); 


     Bundle myBundle = intent.getExtras(); 
     SmsMessage [] messages = null; 
     String strMessage = ""; 

     if (myBundle != null) 
     { 
      Object [] pdus = (Object[]) myBundle.get("pdus"); 
      messages = new SmsMessage[pdus.length]; 

      for (int i = 0; i < messages.length; i++) 
      { 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      //  strMessage += "SMS From the king him self: " + messages[i].getOriginatingAddress(); 
     //   strMessage += " : "; 
       strMessage += messages[i].getMessageBody(); 
     //  strMessage += "\n"; 


      } 
    //max volume 
      AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
       am.setStreamVolume(AudioManager.STREAM_MUSIC,am.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0); 

      Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show(); 

    //  Notification n=new Notification(android.R.drawable.) 
    //  nm.notify(uniqueID,n); 

      ourSong.start(); 
     } 
    } 
    public void a(){ 

    } 

} 

THX합니다.

답변

2

사용자의 의도가 너무 낮고 시스템에 설치된 SMSApp이 응용 프로그램보다 먼저 메시지를받는 것일 수 있습니다. 의 AndroidManifest.xml 파일에 있지만 프로그래밍 방식으로 응용 프로그램 코드에서 SMS_RECEIVED 등록되지 않은 우선 순위 = "999"

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

또 다른 트릭을 추가하십시오. 다음은 실제로 동일한 브로드 캐스트 수신기에 여러 이벤트를 등록하는 예제입니다.

broadcastReceiver = new EventReceiver(); 
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
filter.addAction(Intent.ACTION_SCREEN_OFF); 
filter.addAction("android.provider.Telephony.SMS_RECEIVED"); 
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY-1); 
registerReceiver(broadcastReceiver, filter); 
+0

대단원 !! 그 작업 ty 대단히 –

+0

@ asdasd asd :이 답변 (녹색 체크 표시)을 수락하십시오. 사소한 문제는 우리가 사용자가 어떻게 행동하기를 원하십니까 :) – Whome

관련 문제