Ich habe diese Anwendung, um Benachrichtigungen zu erstellen, aber ich muss sie behalten, wenn das Smartphone einschalten/neu starten. Ich habe versucht, einen Dienst zu erstellen und die App automatisch zu starten, wenn das Smartphone eingeschaltet wird, aber nutzlos ist. Was kann ich tun?Behalten Sie Benachrichtigungen, wenn Sie das Smartphone einschalten
Dies ist der Code:
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends Activity {
Button guardar, cancelar;
EditText nota;
ListView lista;
ArrayList<String> notas;
ArrayAdapter<String> adaptador;
NotificationManager notificationManager;
SharedPreferences preferencias;
SharedPreferences.Editor editor;
int cpos; //cantidad de posiciones ya guardadas
Intent intent;
PendingIntent pIntent;
Notification n;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lista = (ListView) findViewById(R.id.lista);
notas = new ArrayList<String>();
adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, notas);
lista.setAdapter(adaptador);
preferencias = getSharedPreferences("notas", 0);
editor = getSharedPreferences("notas", 0).edit();
cpos = preferencias.getInt("posicionesT", -1);
for(int i = 0; i <= cpos; i++)
{
notas.add(preferencias.getString(Integer.toString(i), ""));
adaptador.notifyDataSetChanged();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if(item.getItemId() == R.id.add)
{
LayoutInflater inflater = getLayoutInflater();
View dialog = inflater.inflate(R.layout.nota, null);
guardar = (Button) dialog.findViewById(R.id.guardar);
cancelar = (Button) dialog.findViewById(R.id.cancelar);
nota = (EditText) dialog.findViewById(R.id.nota);
cancelar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
});
guardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
notas.add(nota.getText().toString());
adaptador.notifyDataSetChanged();
cpos++;
editor.putInt("posicionesT", cpos);
editor.putString(Integer.toString(cpos), nota.getText().toString());
editor.commit();
intent = new Intent(getApplicationContext(), MainActivity.class);
pIntent = PendingIntent.getActivity(getApplicationContext(), (int) System.currentTimeMillis(), intent, 0);
n = new Notification.Builder(getApplicationContext())
.setContentTitle("Recordar")
.setStyle(new Notification.BigTextStyle().bigText(nota.getText()))
.setSmallIcon(R.drawable.ic_icono)
.setContentIntent(pIntent)
.setColor(Color.parseColor("#4CAF50"))
.setOngoing(true) //notificacion persistente
.addAction(R.drawable.ic_borrar, "Quitar nota", pIntent).build();
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(cpos, n);
}
});
AlertDialog.Builder alerta = new AlertDialog.Builder(MainActivity.this);
alerta.setView(dialog);
alerta.show();
}
return super.onOptionsItemSelected(item);
}
}
erstellt, fügen Sie nur Android: permission = "android.permission.RECEIVE_BOOT_COMPLETED"> hinzu oder erstellen Sie einen Dienst, um die Liste der gespeicherten Benachrichtigungen zu lesen. –
Sie müssen die Berechtigung hinzufügen und einen BroadcastReceiver erstellen, um die Übertragung zu empfangen, und diesen Empfänger im Manifest registrieren. Sie können wählen, dass der Empfänger einen Dienst startet, aber ich glaube nicht, dass das unbedingt notwendig ist - Sie können die Verarbeitung direkt im Empfänger vornehmen. –
Ok. Ich werde das versuchen. Vielen Dank! –