Il y a un fichier .jar, j'ai besoin de changer un outil de méthode privée dans un fichier .class. Cette méthode ci-dessousjava reflection: Est-il possible de surcharger une méthode privée en changeant la méthode Id?
private void vibrate() {
Vibrator vibrator = (Vibrator)RongContext.getInstance().getSystemService("vibrator");
vibrator.vibrate(new long[]{0L, 200L, 250L, 200L}, -1);
}
cette méthode privée est invoquée par une autre une autre méthode privée ci-dessous
private void notify(Context context, Message message, int left) {
boolean isInBackground = SystemUtils.isInBackground(context);
if(message.getConversationType() != ConversationType.CHATROOM) {
if(isInBackground) {
RongNotificationManager.getInstance().onReceiveMessageFromApp(message);
} else if(!this.isInConversationPager(message.getTargetId(), message.getConversationType()) && left == 0 && System.currentTimeMillis() - this.lastSoundTime > 3000L) {
this.lastSoundTime = System.currentTimeMillis();
int ringerMode = NotificationUtil.getRingerMode(context);
if(ringerMode != 0) {
if(ringerMode != 1) {
this.sound();
}
this.vibrate();
}
}
}
}
je dois l'entourer d'un si bloc comme celui-ci
private void vibrate() {
if(xxx){
Vibrator vibrator = (Vibrator)RongContext.getInstance().getSystemService("vibrator");
vibrator.vibrate(new long[]{0L, 200L, 250L, 200L}, -1);
}
}
donc je viens se demandait s'il y avait de toute façon à changer l'implémentation de la méthode privée, comme changer la méthode Id utiliser ClassLoader, ou autre chose.