|
91 | 91 | * 主程序.
|
92 | 92 | *
|
93 | 93 | * @author <a href="https://88250.b3log.org">Liang Ding</a>
|
94 |
| - * @version 1.1.1.5, Apr 2, 2025 |
| 94 | + * @version 1.1.1.6, Apr 9, 2025 |
95 | 95 | * @since 1.0.0
|
96 | 96 | */
|
97 | 97 | public class MainActivity extends AppCompatActivity implements com.blankj.utilcode.util.Utils.OnAppStatusChangedListener {
|
@@ -178,67 +178,6 @@ private void initUIElements() {
|
178 | 178 | bootDetailsText = findViewById(R.id.bootDetails);
|
179 | 179 | webView = findViewById(R.id.webView);
|
180 | 180 | webView.setBackgroundColor(Color.parseColor("#1e1e1e"));
|
181 |
| - webView.setWebChromeClient(new WebChromeClient() { |
182 |
| - @Override |
183 |
| - public boolean onShowFileChooser(final WebView mWebView, final ValueCallback<Uri[]> filePathCallback, final FileChooserParams fileChooserParams) { |
184 |
| - if (uploadMessage != null) { |
185 |
| - uploadMessage.onReceiveValue(null); |
186 |
| - } |
187 |
| - |
188 |
| - uploadMessage = filePathCallback; |
189 |
| - |
190 |
| - if (fileChooserParams.isCaptureEnabled()) { |
191 |
| - if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) { |
192 |
| - // 不支持 Android 10 以下 |
193 |
| - Utils.showToast(MainActivity.this, "Capture is not supported on your device (Android 10+ required)"); |
194 |
| - uploadMessage = null; |
195 |
| - return false; |
196 |
| - } |
197 |
| - |
198 |
| - if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { |
199 |
| - AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); |
200 |
| - builder.setTitle("权限申请 / Permission Request"); |
201 |
| - builder.setMessage("需要相机权限以拍摄照片并插入到当前文档中 / Camera permission is required to take photos and insert them into the current document"); |
202 |
| - builder.setPositiveButton("同意/Agree", (dialog, which) -> { |
203 |
| - ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.CAMERA}, REQUEST_CAMERA); |
204 |
| - }); |
205 |
| - builder.setNegativeButton("拒绝/Decline", (dialog, which) -> { |
206 |
| - Utils.showToast(MainActivity.this, "权限已被拒绝 / Permission denied"); |
207 |
| - uploadMessage = null; |
208 |
| - }); |
209 |
| - builder.setCancelable(false); |
210 |
| - builder.create().show(); |
211 |
| - return true; |
212 |
| - } |
213 |
| - |
214 |
| - final String[] permissions = {android.Manifest.permission.CAMERA}; |
215 |
| - if (!hasPermissions(permissions)) { |
216 |
| - ActivityCompat.requestPermissions(MainActivity.this, permissions, REQUEST_CAMERA); |
217 |
| - return true; |
218 |
| - } |
219 |
| - |
220 |
| - openCamera(); |
221 |
| - return true; |
222 |
| - } |
223 |
| - |
224 |
| - final Intent intent = fileChooserParams.createIntent(); |
225 |
| - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); |
226 |
| - try { |
227 |
| - startActivityForResult(intent, REQUEST_SELECT_FILE); |
228 |
| - } catch (final Exception e) { |
229 |
| - uploadMessage = null; |
230 |
| - Utils.showToast(MainActivity.this, "Cannot open file chooser"); |
231 |
| - return false; |
232 |
| - } |
233 |
| - return true; |
234 |
| - } |
235 |
| - |
236 |
| - @Override |
237 |
| - public void onPermissionRequest(final PermissionRequest request) { |
238 |
| - request.grant(request.getResources()); |
239 |
| - } |
240 |
| - |
241 |
| - }); |
242 | 181 |
|
243 | 182 | webView.setDownloadListener((url, userAgent, contentDisposition, mimetype, contentLength) -> {
|
244 | 183 | final Uri uri = Uri.parse(url);
|
@@ -332,6 +271,65 @@ public void onHideCustomView() {
|
332 | 271 | mCustomViewCallback.onCustomViewHidden();
|
333 | 272 | mCustomViewCallback = null;
|
334 | 273 | }
|
| 274 | + |
| 275 | + @Override |
| 276 | + public boolean onShowFileChooser(final WebView mWebView, final ValueCallback<Uri[]> filePathCallback, final FileChooserParams fileChooserParams) { |
| 277 | + if (uploadMessage != null) { |
| 278 | + uploadMessage.onReceiveValue(null); |
| 279 | + } |
| 280 | + |
| 281 | + uploadMessage = filePathCallback; |
| 282 | + |
| 283 | + if (fileChooserParams.isCaptureEnabled()) { |
| 284 | + if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.Q) { |
| 285 | + // 不支持 Android 10 以下 |
| 286 | + Utils.showToast(MainActivity.this, "Capture is not supported on your device (Android 10+ required)"); |
| 287 | + uploadMessage = null; |
| 288 | + return false; |
| 289 | + } |
| 290 | + |
| 291 | + if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { |
| 292 | + AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); |
| 293 | + builder.setTitle("权限申请 / Permission Request"); |
| 294 | + builder.setMessage("需要相机权限以拍摄照片并插入到当前文档中 / Camera permission is required to take photos and insert them into the current document"); |
| 295 | + builder.setPositiveButton("同意/Agree", (dialog, which) -> { |
| 296 | + ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.CAMERA}, REQUEST_CAMERA); |
| 297 | + }); |
| 298 | + builder.setNegativeButton("拒绝/Decline", (dialog, which) -> { |
| 299 | + Utils.showToast(MainActivity.this, "权限已被拒绝 / Permission denied"); |
| 300 | + uploadMessage = null; |
| 301 | + }); |
| 302 | + builder.setCancelable(false); |
| 303 | + builder.create().show(); |
| 304 | + return true; |
| 305 | + } |
| 306 | + |
| 307 | + final String[] permissions = {android.Manifest.permission.CAMERA}; |
| 308 | + if (!hasPermissions(permissions)) { |
| 309 | + ActivityCompat.requestPermissions(MainActivity.this, permissions, REQUEST_CAMERA); |
| 310 | + return true; |
| 311 | + } |
| 312 | + |
| 313 | + openCamera(); |
| 314 | + return true; |
| 315 | + } |
| 316 | + |
| 317 | + final Intent intent = fileChooserParams.createIntent(); |
| 318 | + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); |
| 319 | + try { |
| 320 | + startActivityForResult(intent, REQUEST_SELECT_FILE); |
| 321 | + } catch (final Exception e) { |
| 322 | + uploadMessage = null; |
| 323 | + Utils.showToast(MainActivity.this, "Cannot open file chooser"); |
| 324 | + return false; |
| 325 | + } |
| 326 | + return true; |
| 327 | + } |
| 328 | + |
| 329 | + @Override |
| 330 | + public void onPermissionRequest(final PermissionRequest request) { |
| 331 | + request.grant(request.getResources()); |
| 332 | + } |
335 | 333 | });
|
336 | 334 |
|
337 | 335 | final JSAndroid JSAndroid = new JSAndroid(this);
|
|
0 commit comments