Как способствовать тому, чтобы Пользователь создал Имя и Описание Извещения (Тревога)

Как я могу делать для того, чтобы Пользователь создал Имя и описание извещения (Тревогу). Как вы будете видеть в моем коде (внизу) в AlarmReceiver верю я в извещение (Тревогу) с именем и описанием, как я могу способствовать тому, чтобы эти параметры создали посредством EditText (textonombre и textodescripcion) с приложения?

MainActivity.java:

public class MainActivity extends ActionBarActivity {

    DatePicker datePicker;
    TimePicker timePicker;
    Button btnStart;
    Uri uriAlarm;
    final static int RQS_1 = 1;
    EditText textonombre;
    EditText textodescripcion;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notif_main);

        datePicker = (DatePicker)findViewById(R.id.datepicker);
        timePicker = (TimePicker)findViewById(R.id.timepicker);
        btnStart = (Button)findViewById(R.id.start);
        uriAlarm = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        textonombre = (EditText)findViewById(R.id.textonombre);
        textodescripcion = (EditText)findViewById(R.id.textodescripcion);



        btnStart.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                    setAlarm(uriAlarm);
                    Toast.makeText(MainActivity.this, "Alarma ACTIVADA", Toast.LENGTH_SHORT).show();
                }
        });
    }

    private void setAlarm(Uri passuri){

        Calendar cal = Calendar.getInstance();
        cal.set(datePicker.getYear(),
                datePicker.getMonth(),
                datePicker.getDayOfMonth(),
                timePicker.getCurrentHour(),
                timePicker.getCurrentMinute(),
                00);
        Intent intent = new Intent(getBaseContext(), pruebaintento.dos.notif.AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                getBaseContext(),
                RQS_1,
                intent,
                PendingIntent.FLAG_CANCEL_CURRENT);

        AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

    }
}

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

        Intent repeating_intent = new Intent(context,MainActivity.class);
        repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


        PendingIntent pendingIntent = PendingIntent.getActivity(context,id,repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT);


        NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
                .setContentIntent(pendingIntent)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("NOMBRE")
                .setContentText("DESCRIPCIÓN")
                .setAutoCancel(true);
        notificationManager.notify(id,builder.build());

    }
}
1
задан 08.01.2017, 06:31
0 ответов

Ты можешь добавлять дополнительные intent:

intent.putExtra("titulo","Mi Titulo");    
intent.putExtra("texto","Mi Texto");

потом вооружая твое известие:

    NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
            .setContentIntent(pendingIntent)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(intent.getStringExtra("titulo"))
            .setContentText(intent.getStringExtra("texto"))
            .setAutoCancel(true);
    notificationManager.notify(id,builder.build());

С actualisación твоего вопроса с кодом твоего Activity я имею по отношению к тебе оставшуюся часть решения:

Давайте присоединять дополнительных в Intent, что ты перемещаешь в PendingIntent для AlarmManager:

private void setAlarm(Uri passuri){

    Calendar cal = Calendar.getInstance();
    cal.set(datePicker.getYear(),
            datePicker.getMonth(),
            datePicker.getDayOfMonth(),
            timePicker.getCurrentHour(),
            timePicker.getCurrentMinute(),
            00);
    Intent intent = new Intent(getBaseContext(), pruebaintento.dos.notif.AlarmReceiver.class);
    //los extras
    intent.putExtra("titulo",textonombre.getText().toString());
    intent.putExtra("texto",textodescripcion.getText().toString());
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            getBaseContext(),
            RQS_1,
            intent,
            PendingIntent.FLAG_CANCEL_CURRENT);

    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

} 

В получателе он меняется:

@Override
public void onReceive(Context context, Intent intent) {

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent repeating_intent = new Intent(context,MainActivity.class);
    repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


    PendingIntent pendingIntent = PendingIntent.getActivity(context,id,repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT);


    NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
            .setContentIntent(pendingIntent)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(intent.getStringExtra("titulo"))
            .setContentText(intent.getStringExtra("texto"))
            .setAutoCancel(true);
    notificationManager.notify(id,builder.build());

}

Ты мог бы добавлять, что утверждение данных, введенных в компьютер для app производства, для задания этого достигает.

2
ответ дан 03.12.2019, 17:50
  • 1
    спасибо за твой ответ, но я новая в этом и не понимаю очень хорошо, как я должен añ adir ahí идентификация моего EditText, я podrí схвати объяснять немного má s твой ответ? Спасибо! –  08.01.2017, 05:58
  • 2
    Я не вижу никакого EditText в твоем коде. Если ты такой новый, может быть, serí в хорошую мысль начинаться проверки и понимания каких-то из основных примеров в Андроид Студио, LoginActivity например показывает, как читать текст EditText. Также recommiendo чтения немного в documentació n чиновник на EditText . –  08.01.2017, 06:06
  • 3
    спасибо за твой ответ, но я поместил в вопросе ясно, который был для EditText, а está в có я говорю, что он, потому что он не надо, в моем opinió n, чтобы давать ответ, санкционируй, спасибо. –  08.01.2017, 06:12
  • 4
    Те entendí однако чтобы получать информацию с EditText, ты будешь нуждаться в Activity, с layout и всем личном имуществе. Он много má s fá cil для тебя как для demá s, если ты используешь AndroidStudio и создаешь новый LoginActivity, вместо которого другой человек делает то же самое и тебя копирует код aquí ;) Старайся быть немного má s я делаю конкретным с помощью ue ты просишь, пожалуйста. –  08.01.2017, 06:22
  • 5
    Añ adida мой activity, чтобы видеть, можешь ли ты помогать мне, спасибо снова @StefanNolde –  08.01.2017, 06:32