как имитировать нажатие на изображение/кнопку в пользовательском уведомлении
В службе NotificationListener, когда мы получаем уведомление через onNotificationPosted после этого mActions или вы можете сказать Notification.Actions[], я могу получить действия и нажать на них через action.send(), но в этом случае это не кнопки действий, в этом уведомлении есть изображения мне нужно нажать на них, как я могу нажать на них.
Простыми словами -
Я могу нажимать кнопки действия уведомления Я могу нажимать
This is the Code
Notification n = sbn.getNotification();
Notification.Action[] actions = n.actions;
actions[0].actionIntent.send(); // Working fine
Полный код прослушивателя уведомлений
@Override
public void onNotificationPosted(StatusBarNotification sbn){
String packageName = sbn.getPackageName();
//Log.d("NOTIFS", ".........."+packageName);
String dlist = getPackagesOfDialerApps(getApplicationContext()).toString(); // LIST of all dialer/phone app packages
//Log.d("NOTIFS DIALERS ..........", ""+dlist);
if(packageName.equalsIgnoreCase(dlist) || dlist.contains(packageName) || dlist.contains("phone") || dlist.contains("dialer") || dlist.contains("call")){
sp = getSharedPreferences("Oncall", MODE_PRIVATE);
esp = sp.edit();
Log.d("NOTIFS", ".......... Incoming Call");
Notification n = sbn.getNotification();
final Notification.Action[] actions = n.actions;
if(actions != null) {
Log.d("NOTIFS ..............................", ""+actions.toString() + " LENGTH......" + actions.length);
for(int x=0; x<actions.length; x++){
String t1 = actions[x].title.toString();
Log.d("NOTIFS ACTION "+x, "............." + t1);
if (t1.contains("Answer") || t1.contains("Accept")) {
Log.d("NOTIFS CATCH", "............. FOUND ANSWER BUTTON on ACTION - "+x);
Toast.makeText(this, "Answering Call in 5 seconds", Toast.LENGTH_SHORT).show();
final int finalX = x;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
Log.d("NOTIFS", ".......... Call Answered");
actions[finalX].actionIntent.send();
esp.putBoolean("mycall", true);
esp.apply();
Toast.makeText(getApplicationContext(), "Call Answered", Toast.LENGTH_SHORT).show();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
}
}, 5000);
}else if(t1.contains("Hang up") || t1.contains("End call")){
Log.d("NOTIFS", ".......... END Call Initiator");
if(sp.getBoolean("mycall", false)){
Log.d("NOTIFS", ".......... ON Call already");
//END CALL WITH TIMER
Toast.makeText(this, "Call will End in 10 seconds.", Toast.LENGTH_SHORT).show();
final int finalX1 = x;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
actions[finalX1].actionIntent.send();
Log.d("NOTIFS", ".......... Call End");
}catch (PendingIntent.CanceledException e) {
e.printStackTrace();
Log.d("NOTIFS", ".......... Can;t end call");
}
}
}, 10000);
//END CALL WITH TIMER END
}
}else{
Toast.makeText(this, "NO DEFINED ACTION FOUND", Toast.LENGTH_SHORT).show();
Log.d("NOTIFS ", "............. ACTIONS "+x+"........."+t1 );
}
}
}else{
Toast.makeText(this, "Call answer action not found in notification", Toast.LENGTH_SHORT).show();
Log.d("NOTIFS ", "............. NO ACTION FOUND");
}
}
}
Я хочу нажать на кнопку уведомления этого типа Кнопка/изображение, на которое я хочу нажать