Skip to content

Commit 1d397ed

Browse files
committed
fix: debug call recording path permission and hook triggering
1 parent f2976be commit 1d397ed

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

app/src/main/java/com/wmods/wppenhacer/xposed/features/media/CallRecording.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public void doHook() throws Throwable {
5050
@Override
5151
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
5252
int source = (int) param.args[0];
53+
XposedBridge.log("WaEnhancer: AudioRecord Source " + source);
5354
if (source == android.media.MediaRecorder.AudioSource.VOICE_COMMUNICATION) {
5455
sampleRate = (int) param.args[1];
5556
int channelConfig = (int) param.args[2];
@@ -109,26 +110,34 @@ private synchronized void startRecording() {
109110
if (Environment.isExternalStorageManager()) {
110111
parentDir = new File(Environment.getExternalStorageDirectory(), "WA Call Recordings");
111112
} else {
112-
parentDir = new File(outputDir);
113+
// Fallback to safe external storage (Android/data/com.whatsapp/files/Recordings)
114+
parentDir = new File(com.wmods.wppenhacer.xposed.core.FeatureLoader.mApp.getExternalFilesDir(null), "Recordings");
113115
}
114116

115-
// Subfolders: Package Name -> Audio (Default, since type detection is complex here)
116117
File dir = new File(parentDir, appName + "/Audio");
117-
if (!dir.exists()) dir.mkdirs();
118+
if (!dir.exists()) {
119+
boolean created = dir.mkdirs();
120+
if (!created) {
121+
XposedBridge.log("WaEnhancer: Failed to create directory: " + dir.getAbsolutePath());
122+
Utils.showToast("WaEnhancer: RW Error " + dir.getAbsolutePath(), android.widget.Toast.LENGTH_LONG);
123+
return;
124+
}
125+
}
118126

119127
String fileName = "Call_" + new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()) + ".wav";
120128
File file = new File(dir, fileName);
121129
randomAccessFile = new RandomAccessFile(file, "rw");
122130

123-
// write placeholder header
124-
randomAccessFile.setLength(0); // truncate
131+
randomAccessFile.setLength(0);
125132
randomAccessFile.write(new byte[44]);
126133

127134
isRecording = true;
128135
payloadSize = 0;
129-
XposedBridge.log("WaEnhancer: AudioRecord initiated at " + sampleRate + "Hz");
136+
XposedBridge.log("WaEnhancer: Recording started: " + file.getAbsolutePath());
137+
Utils.showToast("rec: " + file.getName(), android.widget.Toast.LENGTH_SHORT);
130138
} catch (Exception e) {
131139
XposedBridge.log(e);
140+
Utils.showToast("Rec Error: " + e.getMessage(), android.widget.Toast.LENGTH_LONG);
132141
}
133142
}
134143

0 commit comments

Comments
 (0)