我对自己的问题感到震惊。实际上我想要做的是创建一个通知服务,即使用户不在应用程序中也能提供用户警报。该服务应每5分钟检查一次收到的消息。通知应与通知抽屉中的通知收件箱样式完全相同。我需要通过单击通知来调用特定活动。谁能建议我怎么做?谢谢你的帮助....
答案 0 :(得分:0)
首先,您需要获得接收和读取短信的权限。您可以使用以下代码在androidManifest.xml
中执行此操作: -
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sms"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application></manifest>
然后,您需要将BroadcastReceiver设置为接收传入SMS的通知。
public class SMSBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "no message received";
if(bundle != null){
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 Phone No: " +msgs[i].getOriginatingAddress();
str +="\n"+"Message is: ";
str += msgs[i].getMessageBody().toString();
str +="\n";
}
Log.v("Debug", str);
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
}
}}
以上代码将为您提供短信发件人的联系电话和收到的信息。