我想创建一个无需打开实际应用即可在BOOT_COMPLETED上发送通知的Android应用。 我从网上使用了一些代码示例,并在接收方收到BOOT_COMPLETED时对其进行了修改,以调用NotifyOnBoot类。这确实在某种程度上起作用。它发送一个推送通知。但是,它还会打开NotifyOnBoot接口,这是不应该发生的。 (NotifyOnBoot类不应作为可访问的接口)我只想发送推送通知,而无需打开应用程序。我该如何实现?顺便说一句,我真的是Java新手。过去我已经做过一些基本的Python,但这是我第一次使用Android Studio。对不起,意大利面条代码:(
这实际上是发送通知的内容:
NotifyOnBoot.java
public class NotifyOnBoot extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createNotification();
}
public void createNotification() {
Notification notification = new Notification();
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "default");
builder.
//Builder commands
// Launch App
PendingIntent mPendingIntent = PendingIntent.getActivity(NotifyOnBoot.this, 0,
new Intent(getApplicationContext(), MainActivity.class),
PendingIntent.FLAG_UPDATE_CURRENT
);
// Launch App on Notification Click
builder.setContentIntent(mPendingIntent);
// Show Notification
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationManager.createNotificationChannel(new NotificationChannel("default", "Startup Notification", NotificationManager.IMPORTANCE_MAX));
}
notificationManager.notify(1, builder.build());
}
}
这是接收BOOT_COMPLETED信号并调用类的部分。
StartActivityOnBootReceiver.java
public class StartActivityOnBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(Objects.equals(intent.getAction(), "android.intent.action.BOOT_COMPLETED")) {
Intent it = new Intent(context, NotifyOnBoot.class);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);
}
}
}