Java 从任务管理器关闭应用程序后,广播接收器在棒棒糖中不工作
这是广播接收机。这段代码在kitkat和jeallyBean中工作。在这种情况下,我们可以简单地接收传入消息的通知。当手机中出现任何消息时,它会显示通知Java 从任务管理器关闭应用程序后,广播接收器在棒棒糖中不工作,java,android,xml,Java,Android,Xml,这是广播接收机。这段代码在kitkat和jeallyBean中工作。在这种情况下,我们可以简单地接收传入消息的通知。当手机中出现任何消息时,它会显示通知 public class IncomingSms extends BroadcastReceiver { final SmsManager sms = SmsManager.getDefault(); Notification myNotication; NotificationManager nm; p
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);
}
}
}
public class IncomingSms扩展广播接收器{
final smsmsmanager sms=smsmsmanager.getDefault();
通知我的通知;
通知经理nm;
公共void onReceive(上下文、意图){
nm=(NotificationManager)上下文
.getSystemService(上下文通知服务);
final Bundle=intent.getExtras();
Intent startServiceIntent=新的Intent(上下文,MainActivity.class);
试一试{
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
对于(int i=0;i
我在舱单上声明
<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>
当应用程序从任务管理器关闭时,这不起作用。但它对菜豆有效。我想显示应用程序是打开还是关闭的通知。请参见以下内容 我还认为你可能想了解一下如何设置优先级。请阅读以下内容: AndroidManifestIntentFilter\u优先级 int AndroidManifestIntentFilter_优先级指定相对 处理特定意图的重要性或能力。对于接收者, 这控制执行它们以接收请求的顺序 广播(请注意,对于异步广播,此顺序为 忽略)。对于活动,这提供了有关 活动是处理意图;当多个活动与一个 意图和优先级不同,只有那些优先级较高的 优先级值将被视为匹配项 仅在您确实需要强制某些特定顺序时使用 接收广播,或希望强制将某个活动放置到 总是比别人更受欢迎。该值是单个整数,带有 数字越高越好 必须是整数值,例如“100” 这也可能是对资源的引用(在 “@[package:]type:name”)或主题属性(格式为 “?[package:[type:]name”)包含此类型的值 这对应于全局属性资源符号优先级 常量值:2(0x00000002)