2014-01-20 28 views
0

我有一個COMPLETED ON BOOT服務,如果我收到短信,音樂立即開始播放。收到短信時無法啓動我的服務

我做錯了什麼?

public class MyService extends Service { 

final MediaPlayer mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.son1); 

private final BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if(action.equals("android.provider.Telephony.SMS_RECEIVED")){ 
      AudioManager mAudioManager = (AudioManager)getApplication().getSystemService(Context.AUDIO_SERVICE); 
      mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); 
          mPlayer.start(); 
      } 
     } 
    }; 

} 


<service android:name=".MyService"/> 
    <receiver android:name=".AutoStart"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
    </receiver> 
+0

請發佈AndroidManifest.xml代碼以及 – Vigbyor

+0

註冊此Receiver的位置? –

+0

logcat是否發佈了任何有趣的內容? (如「缺少許可」) – Sdra

回答

0

我建議你在你的AndroidManifest.xml中使用android:priority="999"如下,

<receiver 
     android:name="com.application.reciever.SMSReceiver" 
     class="com.application.reciever.SMSReceiver" android:exported="true"> 
     <intent-filter android:priority="999" > 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
</receiver> 

這樣,你的應用程序中獲取的短信優先接收事件。

public class SMSReceiver extends BroadcastReceiver 
{ 
     @Override 
     public void onReceive(Context mContext, Intent intent) 
     { 
      // Your code to play music 
     } 
} 
+0

我錯過了android:priority。非常感謝你 – Andrey

0

您可能會錯過接收SMS_RECEIVED廣播的權限。嘗試添加到您的清單:

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