سؤال

I have a COMPLETED ON BOOT service in which a music starts immediately should I receive an SMS.

Am I doing something wrong?

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>
هل كانت مفيدة؟

المحلول

I suggest you to use android:priority="999" in your AndroidManifest.xml as follows,

<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>

This way your application get's priority on SMS Receive event.

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

نصائح أخرى

You probably miss the permission to receive SMS_RECEIVED broadcasts. Try adding to your manifest:

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top