--BroadcastReceiver ist ein Mechanismus zum Empfangen von Broadcast-Absichten.
--Intent ist eine Funktion jeder Anwendung. Zum Beispiel ein Mechanismus, der Anwendungen, Anwendungen und Widgets sowie Anwendungen und Systeme miteinander verbindet.
Ich habe den Dienst über die Aktivität gestartet → Ich habe versucht, den Empfänger beim Dienst zu registrieren
MyReceiver.java
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.d("registerReceiver: ", "ON");
}
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Log.d("registerReceiver: ", "OFF");
}
}
}
}
MyActivity.java
public class MyActivity extends Activity {
Button startButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton = (Button)findViewById(R.id.start_button);
startButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(this(), MyService.class));
} else {
startService(new Intent(this(), MyService.class));
}
}
}
}
MyService.java
public class MyService extends Service {
private MyReceiver mReceiver;
private IntentFilter mIntentFilter;
@Override
public void onCreate() {
super.onCreate();
//Führen Sie die Empfängerregistrierung durch
registerScreenReceiver();
}
@Override
public void onDestroy() {
super.onDestroy();
//Empfänger freigeben
unregisterReceiver(mReceiver);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startInForeground();
return START_STICKY;
}
//Empfänger registrieren
private void registerScreenReceiver() {
mReceiver = new MyReceiver();
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
mIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(mReceiver, mIntentFilter);
}
//Generieren Sie Benachrichtigungen, um den Dienst zu aktivieren
private void startInForeground() {
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(getResources().getString(R.string.app_name))
.setContentText("test notification")
.setTicker(getResources().getString(R.string.app_name))
.setContentIntent(pendingIntent);
Notification notification = builder.build();
if (Build.VERSION.SDK_INT >= 26) {
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID
, NOTIFICATION_CHANNEL_NAME
, NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription(NOTIFICATION_CHANNEL_DESC);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
}
startForeground(NOTIFICATION_ID, notification);
}
}
――Da ich mir oft die meisten Lebensprotokoll- und Gesundheits-Apps anschaue, habe ich mich gefragt, wie die Daten aggregiert wurden, aber ich hatte das Gefühl, dass es viele Muster mit Absicht gibt, also habe ich sie untersucht. ――Es gibt so viele andere Absichten als die diesmal eingeführten, so dass einige Apps nützlich sein können ...
Recommended Posts