This commit is contained in:
谦君
2026-01-23 02:24:34 +08:00
parent d44ea60ae9
commit 703563c9b2
3 changed files with 50 additions and 2 deletions

View File

@@ -8,9 +8,12 @@ import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.net.Uri;
import android.content.Intent;
import androidx.core.splashscreen.SplashScreen;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsControllerCompat;
@@ -18,6 +21,8 @@ import com.getcapacitor.BridgeActivity;
public class MainActivity extends BridgeActivity {
private boolean isWebViewReady = false;
private static final int FILE_CHOOSER_REQUEST_CODE = 1001;
private ValueCallback<Uri[]> filePathCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -94,7 +99,50 @@ public class MainActivity extends BridgeActivity {
isWebViewReady = true;
}
}
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams) {
// 清理之前的回调
if (MainActivity.this.filePathCallback != null) {
MainActivity.this.filePathCallback.onReceiveValue(null);
}
MainActivity.this.filePathCallback = filePathCallback;
// 创建文件选择器 Intent
Intent intent = fileChooserParams.createIntent();
try {
startActivityForResult(intent, FILE_CHOOSER_REQUEST_CODE);
} catch (android.content.ActivityNotFoundException e) {
MainActivity.this.filePathCallback = null;
return false;
}
return true;
}
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILE_CHOOSER_REQUEST_CODE) {
if (filePathCallback == null) {
return;
}
Uri[] results = null;
if (resultCode == RESULT_OK && data != null) {
String dataString = data.getDataString();
if (dataString != null) {
results = new Uri[]{Uri.parse(dataString)};
}
}
filePathCallback.onReceiveValue(results);
filePathCallback = null;
}
}
}