0

Ich mache eine Alarm-App und wenn Benutzer den Titel und die Beschreibung eingeben, wird eine Benachrichtigung zur ausgewählten Zeit angezeigt. Ich möchte zwei String-Werte mit den Namen txttitle und txtdesc in intents speichern und sie in broadcast-receiver senden, wenn eine Benachrichtigung eingeht, sollten der Titel und die Beschreibung dieser Benachrichtigung die Titel- bzw. Beschreibungszeichenfolgenwerte sein. Ich habe erfolgreich die Benachrichtigung ausgegeben, aber es gibt keinen Titel und eine Beschreibung, die ich brauche, es ist so etwas wie app.support.v7.widget
Hier ist mein Code.
AddNote.javaÜbertragen von Daten von der Aktivität zum BroadCast-Empfänger

public class AddNote extends AppCompatActivity { 

    int mHour, mMin, hour , min, mYear, mMonth, mDay; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_note); 
     final CheckBox chckRem = (CheckBox) findViewById(R.id.cHcRem); 
     final Button btnOk = (Button) findViewById(R.id.bTok); 

     chckRem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (chckRem.isChecked()){ 
        /** It is checked*/ 
        // Get Current Date 
        final Calendar c = Calendar.getInstance(); 
        mYear = c.get(Calendar.YEAR); 
        mMonth = c.get(Calendar.MONTH); 
        mDay = c.get(Calendar.DAY_OF_MONTH); 


        DatePickerDialog datePickerDialog = new DatePickerDialog(AddNote.this, 
          new DatePickerDialog.OnDateSetListener() { 

           @Override 
           public void onDateSet(DatePicker view, int year, 
                 int monthOfYear, int dayOfMonth) { 
           final int day = dayOfMonth; 
           final int yer = year; 
           final int month = monthOfYear; 

            /** LAUNCH THE TIMEPICKER*/ 
            Calendar c = Calendar.getInstance(); 
            mHour = c.get(Calendar.HOUR_OF_DAY); 
            mMin =c.get(Calendar.MINUTE); 

            /** LAUNCH THE TIMEPICKER*/ 
            // Launch Time Picker Dialog 
            TimePickerDialog timePickerDialog = new TimePickerDialog(AddNote.this, 
              new TimePickerDialog.OnTimeSetListener() { 

               @Override 
               public void onTimeSet(TimePicker view, int hourOfDay, 
                     int minute) { 
                /**tHIS*/ 
                hour = hourOfDay; 
                min = minute; 
                int sec = 0; 
                Calendar cl = Calendar.getInstance(); 
                cl.setTimeInMillis(System.currentTimeMillis()); 
                cl.clear(); 
                cl.set(yer, month, day, hour, min); 
                EditText txtitle = (EditText) findViewById(R.id.tTit); 
                EditText txtdesc = (EditText) findViewById(R.id.tDet); 
                Intent notMessage = new Intent(getApplicationContext(), NotificatioRec.class); 
                notMessage.putExtra("TITLE", txtitle.toString().trim()); 
                notMessage.putExtra("DEC", txtdesc.toString().trim()); 
                PendingIntent pi = PendingIntent.getBroadcast(AddNote.this, 0, notMessage, PendingIntent.FLAG_UPDATE_CURRENT); 
                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
                am.set(AlarmManager.RTC_WAKEUP, cl.getTimeInMillis(), pi); 
                Toast.makeText(AddNote.this, "Reminder Added", Toast.LENGTH_SHORT).show(); 
               } 
              }, mHour, mMin, false); 
            timePickerDialog.show(); 

           } 
          }, mYear, mMonth, mDay); 
        datePickerDialog.show(); 

       } 

      } 
     }); 

     btnOk.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        TextoDatabaseHelper textoDatabaseHelper = new TextoDatabaseHelper(AddNote.this); 
        SQLiteDatabase db = textoDatabaseHelper.getReadableDatabase(); 
        Calendar calend = Calendar.getInstance(); 
        int YEAR = calend.get(Calendar.YEAR); 
        int MONTH = calend.get(Calendar.MONTH); 
        int DAY = calend.get(Calendar.DAY_OF_MONTH); 
        String date = DAY + "-" + MONTH + "-" + YEAR; 
        EditText txt_title = (EditText) findViewById(R.id.tTit); 
        String Title = txt_title.getText().toString().trim(); 
        EditText txt_Desc = (EditText) findViewById(R.id.tDet); 
        String Desc = txt_Desc.getText().toString().trim(); 
        insertNote(db, Title, Desc, date); 
        Toast.makeText(AddNote.this, "Note Added" , Toast.LENGTH_SHORT).show(); 
        AddNote.this.finish(); 
       }catch (SQLException e){ 
        Toast.makeText(AddNote.this, "Can't add a new note! Try again.", Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
    } 

    public static void insertNote(SQLiteDatabase db, String title, String desc, String date){ 
     ContentValues Notes = new ContentValues(); 
     Notes.put("TITLE", title); 
     Notes.put("DESCRIPTION", desc); 
     Notes.put("DATE", date); 
     db.insert("NOTES", null, Notes); 
    } 
} 

NotificatioRec.java

public class NotificatioRec extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String title = intent.getStringExtra("TITLE"); 
     String desc = intent.getStringExtra("DESC"); 
     PendingIntent contentIntent = PendingIntent.getActivity(context, 0 , new Intent(context, MainActivity.class), 0); 
     NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(context) 
       .setSmallIcon(R.drawable.logo) 
       .setContentTitle(title).setContentText(desc); 
     mBuilder.setContentIntent(contentIntent); 
     mBuilder.setDefaults(Notification.DEFAULT_SOUND); 
     mBuilder.setCategory(Notification.CATEGORY_ALARM); 
     mBuilder.setAutoCancel(true); 

     NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1, mBuilder.build()); 
    } 
} 

Allerdings ist das einzige Problem, dass es nicht den Titel und die Beschreibung nicht zeigen.

+0

Versuchen Sie den String 'notMessage.putExtra 'zu ändern (" TITLE ", txtitle.toString(). Trim());' zu 'notMessage.putExtra (" TITLE ", String.valueOf (txtitle.getText()). Trim()) ; 'und auch für" DEC ". – fishbone

Antwort

0

Verwendung wie dies unter Für Sendung Aktivität

Intent smsIntent = new Intent("otp"); 
      smsIntent.putExtra("message",sms_str); 

      LocalBroadcastManager.getInstance(context).sendBroadcast(smsIntent); 

Für Aktivität zu senden über diese Absicht zu empfangen.

private BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equalsIgnoreCase("otp")) { 



      } 
     } 
    }; 
0

unten Code in Ihre Adnote Aktivität hinzufügen, von wo aus Sie Absicht von

Intent intent = new Intent("my.action.data"); 
intent.putExtra("otp", otp); 
sendBroadcast(intent); 

senden möchten Get Data On Receive-Methode

public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    Log.i("onReceive Method", "" + action); 

    if(action.equals("my.action.data")){ 
      String otp= intent.getExtras().getString("otp"); 

    } 
} 

Code unten in Ihrem Empfänger hinzufügen (Offensichtliche Datei)

<receiver android:name=".SmsReceiver" android:enabled="true"> 
    <intent-filter> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    <action android:name="my.action.data" /> 
</intent-filter> 
</receiver> 
Verwandte Themen