2011-06-20 80 views
2

我在我的應用程序中使用了BroadcastReceiver類來接收傳入的短信,並且還在清單文件中給予我的應用程序很高的偏好,以便傳入的消息應該首先由我的應用程序處理。當我的應用程序收到短信時,如何播放聲音?

我的主要文件是:

package com.example.demo; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 



public class Demo extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
    //---get the SMS message passed in--- 
    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null; 
    String str = "";    
    if (bundle != null) 
    { 
     //---retrieve the SMS message received--- 
     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 " + msgs[i].getOriginatingAddress();      
      // str += " :"; 
      str += msgs[i].getMessageBody().toString(); 
      // str += "\n";   
     } 
     //---display the new SMS message--- 
     //Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
     String[] msgText; 
     String newstr=""; 
     msgText=str.split(","); 
     newstr+=msgText[1]+","+msgText[2]; 
     if(msgText[0].equals("button")) 
     {     
      Intent i = new Intent(context,Second.class); 
      i.putExtra("msg",newstr); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
    } 
    this.abortBroadcast(); 
} 



} 

和清單的文件是:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.demo" android:versionCode="1" 
android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="8" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name="Second" class=".second" 
     android:label="Demo"> 
    </activity> 
    <receiver android:name=".Demo"> 
     <intent-filter android:priority="100"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 
</application> 
<uses-permission android:name="android.permission.SEND_SMS"> 
</uses-permission> 
<uses-permission android:name="android.permission.RECEIVE_SMS"> 
</uses-permission> 
</manifest> 

我想知道的是我怎麼能玩的時候,我的應用程序接收短信聲音?

我對我應該在哪裏實現代碼感到困惑,因爲在分析數據後,我切換到第二個屏幕(如果msg採用特定格式)。

回答

3

當您收到短信時,您可以使用NotificationManager播放聲音。只需將聲音文件放在res/raw中即可。

NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
Notification notification = new Notification();   
notification.sound = Uri.parse("android.resource://com.your.package/raw/sound_file"); 
nm.notify(0, notification); 
+0

感謝rochdev幫助我。 –

相關問題