Xposed Framework を使用してメソッドをフックしています: "onInterceptTouchEvent" このコードはバックグラウンドで実行されており、Glaxy S4 デバイスのすべてのアプリケーションですべてのタッチ ジェスチャをフックしようとしています。
MotionEvent オブジェクトのデータをファイルに書き込もうとしていますが、「com.sec.android.app.launcher」でタッチ ジェスチャが発生すると、「open failed: EACCES (Permission denied)」という例外が発生します。
同期クラスを使用するか、関数にロックを設定しようとしましたが、役に立ちません。
「uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE」を追加したので問題ありません
もう 1 つの質問ですが、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());
}
}