findAndHookMethod из onInterceptTouchEvent возвращает нечетные данные
Я использую Xposed Framework, чтобы подключить метод: "onInterceptTouchEvent". Этот код выполняется в фоновом режиме, и я пытаюсь подключить каждый жест касания во всех приложениях на моем устройстве Glaxy S4.
Я пытаюсь записать в файл данные объекта MotionEvent, но когда в "com.sec.android.app.launcher" происходит жест касания, я получаю исключение: "ошибка открытия: EACCES (разрешение отклонено)"
Я пытался использовать синхронизированный класс или поставить блокировки на функцию, но это не помогает.
Я добавил "использует разрешение android:name="android.permission.WRITE_EXTERNAL_STORAGE", так что это не проблема
Другой вопрос, почему sInteimes onInterceptTouchEvent получает только ACTION_DOWN?
Вот мой код:
findAndHookMethod("android.view.ViewGroup", lpparam.classLoader, "onInterceptTouchEvent", MotionEvent.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
MotionEvent motionEvent = (MotionEvent) param.args[0];
String path =Environment.getExternalStorageDirectory().toString();
try {
File file = new File(path);
file.mkdir();
path += "/" + filename;
file = new File(path);
CSVWriter writer = null;
FileWriter fw = new FileWriter(path, true);
writer = new CSVWriter(fw);
writer.writeNext(new String[]{otionEvent.getEventTime() + "",
motionEvent.getRawX() + "",
motionEvent.getRawY() + ""
});
writer.close();
} catch (Exception e) {
Toast.makeText(AndroidAppHelper.currentApplication().getBaseContext(), e.getMessage());
}
}