为android触发警报短信

时间:2012-11-25 14:59:25

标签: android sms

先生,我想在用户收到包含特定关键字的短信时触发警报,然后向用户提供alertdialog以回复预定义的消息。在我的代码中,我似乎无法让闹钟起作用。它只显示alertdialog。另外,如果可能的话,我想使用手机的默认闹铃,即使在静音模式下也要将其关闭。我想用警报取代短信接收音。请帮我。提前致谢。

public class EAlarmReceiver extends BroadcastReceiver {

public static String sender;
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Bundle bundle = intent.getExtras(); 
    Object[] pdusObj = (Object[]) bundle.get("pdus"); 
    SmsMessage[] messages = new SmsMessage[pdusObj.length]; 
    for (int i = 0; i<pdusObj.length; i++) 
    { 
            messages[i] = SmsMessage.createFromPdu ((byte[]) 
            pdusObj[i]); 
            sender = messages[i].getOriginatingAddress();
    } 

    for (SmsMessage msg : messages) {
        if (msg.getMessageBody().contains("firealert")) {


            Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
            v.vibrate(300);

            Uri alert = RingtoneManager
                    .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            MediaPlayer mMediaPlayer = new MediaPlayer();

            try {
                mMediaPlayer.setDataSource(context, alert);
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);

            audioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
            if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) 
            {
                mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
                mMediaPlayer.setLooping(false);
                //mMediaPlayer.prepare();
                mMediaPlayer.start();
                Toast.makeText(context.getApplicationContext(), "alarm started", Toast.LENGTH_LONG).show();
            }//end if

            Intent openInterface = new Intent("proj.receiver.RECEIVERINTERFACE");
            openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(openInterface);

        }//end if
    }//end for

}// end onreceive

0 个答案:

没有答案