这是广播接收器。这段代码在 kitkat 和 jeallyBean 中运行。在此我们简单地接收传入消息的通知。当手机收到任何消息时,它会显示通知。
public class IncomingSms extends BroadcastReceiver {
final SmsManager sms = SmsManager.getDefault();
Notification myNotication;
NotificationManager nm;
public void onReceive(Context context, Intent intent) {
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
final Bundle bundle = intent.getExtras();
Intent startServiceIntent = new Intent(context, MainActivity.class);
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String compnum=phoneNumber;
String message = currentMessage.getDisplayMessageBody();
Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
toast.show();
if(senderNum.equals(compnum))
{
Toast.makeText(context,"Come in the loop",Toast.LENGTH_LONG).show();
Intent intent2 = new Intent(context,MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intent2, 0);
Notification.Builder builder = new Notification.Builder(context);
builder.setAutoCancel(true);
builder.setTicker("this is ticker text");
builder.setContentTitle("WhatsApp Notification");
builder.setContentText("You have a new message");
builder.setSmallIcon(R.drawable.pretty_bullet);
builder.setContentIntent(pendingIntent);
builder.setOngoing(true);
builder.setSubText("This is subtext...");
builder.setNumber(100);
builder.build();
myNotication = builder.getNotification();
nm.notify(50, myNotication);
}
}
}
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
}
}
在清单中我声明
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="ANDROID.PERMISSION.WRITE_SETTINGS"/>
<receiver android:name=".IncomingSms">
<intent-filter
android:priority="1">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
当从任务管理器关闭应用程序时,此功能不起作用。但它适用于贾利豆。我想显示应用程序是否打开或关闭的通知。