【问题标题】:delete row from database on notification button click单击通知按钮时从数据库中删除行
【发布时间】:2018-03-12 10:55:15
【问题描述】:

我是安卓的新手。我正在制作一个应用程序,它将发送通知,其中将提供两个按钮,例如“有帮助”和“没有帮助”。 如果用户单击“有帮助”,用户将被重定向到 activity.java,如果用户单击“无帮助”,则该记录将从 sqlite 数据库中删除。代码如下,

通知

 NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
            .setVibrate(new long[]{0, 100, 100, 100, 100, 100})
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle("Content Title")
            .setContentText("Content Text");

    builder.setSmallIcon(R.drawable.bus);
    builder.setContentTitle("Your bus schedule");
    builder.setContentText("Your bus for "+ search );
    Spinner dropdown2 = findViewById(R.id.spinner3);
    Spinner dropdown3 = findViewById(R.id.spinner4);
    String join = "-";
    String ConcatedString1 = dropdown2.getSelectedItem().toString().concat(join).concat(dropdown3.getSelectedItem().toString());
    Intent intent = new Intent(this, SecondClass.class);
    intent.putExtra("username",ConcatedString1);
    PendingIntent pIntent1 = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 0);
    PendingIntent pIntent = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
    builder.addAction(R.drawable.ic_prev, " helpful", pIntent1) // #0
            .addAction(R.drawable.ic_pause, "not helpful ", pIntent)  // #1

            .build();


    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(SecondClass.class);
    stackBuilder.addNextIntent(intent);
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(pendingIntent);

在第一个按钮上,我添加了 pintent 的操作和 pintent1 的其他操作,并且在 pintent 上,我有 getBroadcast,它将重定向到 notificationaction,数据库中的该行将被删除。

通知操作

 public void onReceive(Context context, Intent intent) {



    String action = intent.getStringExtra("action");
    if (action.equals("Sunday-09")) {
        performAction1(action);
    } else  {
        performAction2(action);

    }
    Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    context.sendBroadcast(it);
}

public void performAction1(String action)
{
    DatabaseHelper myDb = new DatabaseHelper(context);
    myDb.deleteData(action);
}
public void performAction2(String action)
{
    DatabaseHelper myDb = new DatabaseHelper(context);
    myDb.deleteData(action);
}

清单

  <receiver android:name=".NofificationAction"></receiver>

数据库助手

 public void deleteData(String name) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL( "delete from search_table where name='" + name + "'");

}

但是当我点击无帮助时,我仍然可以看到记录。谁能帮我。谢谢你的建议

【问题讨论】:

    标签: android sql sqlite android-notifications


    【解决方案1】:

    来自documentationexecSQL

    执行 [s] 单个 SQL 语句,该语句不是 选择/插入/更新/删除

    您应该使用delete

    【讨论】:

    • 我做了 db.delete(TABLE_NAME,COL_2 +"="+name,null);仍然面临同样的问题
    • 也试过 String whereClause = "name=?";字符串 whereArgs[] = {name}; db.delete(TABLE_NAME,whereClause,whereArgs);
    猜你喜欢
    • 2021-12-01
    • 2018-06-08
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多