删除便笺后,用户不会收到通知

时间:2019-01-08 14:30:54

标签: android android-studio

我想实现这一点,如果用户删除了备注,他们会收到有关已删除备注的通知。但是到目前为止,在我的应用程序中它不起作用。如果用户删除备注,则不会发生任何事情。

在下面,我发布了要在其中实现通知的类的代码。单击“删除”按钮后,用户应收到有关数据库更改的通知。

我尝试过:

  1. 使用youtube进行通知,但他们没有频道即可
  2. 更改有关通知的代码的位置
  3. 使用通知代码创建功能

...这些都不起作用...

public class EditDataActivity extends AppCompatActivity {

    private static final String TAG = "EditDataActivity";

    private String CHANNEL_ID = "ID";
    private int notifId = 1000;

    private Button btnSave,btnDelete;
    private EditText editable_item;
    DatabaseHelper mDatabaseHelper;
    private String selectedName;
    private int selectedID;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_data_layout);
        btnSave = (Button) findViewById(R.id.btnSave);
        btnDelete = (Button) findViewById(R.id.btnDelete);
        editable_item = (EditText) findViewById(R.id.editable_item);
        mDatabaseHelper = new DatabaseHelper(this);


        //get the intent extra from the ListDataActivity
        Intent receivedIntent = getIntent();

        //now get the itemID we passed as an extra
        selectedID = receivedIntent.getIntExtra("id",-1); //NOTE: -1 is just the default value

        //now get the name we passed as an extra
        selectedName = receivedIntent.getStringExtra("name");

        //set the text to show the current selected name
        editable_item.setText(selectedName);

        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String item = editable_item.getText().toString();
                if(!item.equals("")){
                    mDatabaseHelper.updateName(item,selectedID,selectedName);
                }else{
                    toastMessage("You must enter a name");
                }
            }
        });

        btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mDatabaseHelper.deleteName(selectedID,selectedName);
                editable_item.setText("");

                Intent intent = new Intent(EditDataActivity.this, ListDataActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                PendingIntent pendingIntent = PendingIntent.getActivity(EditDataActivity.this, 0, intent, 0);

                createNotificationChannel();

                final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(EditDataActivity.this, CHANNEL_ID)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentTitle("NOTIFTITLE")
                        .setContentText("TEXT")
                        .setContentIntent(pendingIntent)
                        .setPriority(NotificationCompat.PRIORITY_DEFAULT);


                toastMessage("removed from database");
            }
        });

    }

    /**
     * customizable toast
     * @param message
     */
    private void toastMessage(String message){
        Toast.makeText(this,message, Toast.LENGTH_SHORT).show();
    }

    private void createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            CharSequence name = "Name of the channel";
            String description = "Description of the channel";
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
            channel.setDescription(description);
            NotificationManager notificationManager = getSystemService(NotificationManager.class);
            notificationManager.createNotificationChannel(channel);
        }
    }

}

1 个答案:

答案 0 :(得分:-1)

您忘记了一些代码。将此行添加到您的代码中

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(id, b.build());

完整代码

 btnDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mDatabaseHelper.deleteName(selectedID,selectedName);
            editable_item.setText("");

            Intent intent = new Intent(EditDataActivity.this, ListDataActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            PendingIntent pendingIntent = PendingIntent.getActivity(EditDataActivity.this, 0, intent, 0);

            createNotificationChannel();

            final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(EditDataActivity.this, CHANNEL_ID)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle("NOTIFTITLE")
                    .setContentText("TEXT")
                    .setContentIntent(pendingIntent)
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT);
            //ADD THIS LINES 
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(id, mBuilder.build());
            toastMessage("removed from database");
        }
    });

您可以为ID使用随机整数,如果要更新通知或取消通知,则可以使用单个ID。