gpt4 book ai didi

java - "Choose File"更改权限后按钮不起作用

转载 作者:行者123 更新时间:2023-12-01 18:46:40 25 4
gpt4 key购买 nike

您好,我的项目需要我使用 WebView 和相机。我在 HTML 中实现了代码,按下“选择文件”按钮后, WebView 将让我选择是使用相机捕获照片还是从文件管理器上传文件。但我不需要文件选项,我只想让它在按下按钮后立即启动相机。这是请求使用我的相机和外部存储的权限的代码

public void get_file(){
String[] perms = {/*Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, */Manifest.permission.CAMERA};

//Checking for CAMERA Permissions first
//if (ASWP_CAMUPLOAD && check_permission(3)) {
//ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, file_perm);

//Checking for storage permission to write images for upload
if (ASWP_FUPLOAD && ASWP_CAMUPLOAD && !check_permission(2) && !check_permission(3)) {
ActivityCompat.requestPermissions(MainActivity.this, perms, file_perm);

//Checking for WRITE_EXTERNAL_STORAGE permission
} else if (ASWP_FUPLOAD && !check_permission(2)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, file_perm);

//Checking for CAMERA permissions
} else if (ASWP_CAMUPLOAD && !check_permission(3)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, file_perm);
}
}
public boolean check_permission(int permission){
switch(permission){
case 1:
return ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;

case 2:
return ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;

case 3:
return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED;

}
return false;
}

这是我更改的代码

static boolean ASWP_FUPLOAD     = false;     //upload file from webview
static boolean ASWP_ONLYCAM = true ; //only use camera as input

我将“从 webview 上传文件”选项从 true 更改为 false。但奇怪的是,当我将其更改为 false 后,按下按钮就不再起作用了。我做错了什么?如果我只想使用相机,我应该删除 public void get_file() 中的一些行吗?希望大家给点建议,谢谢!编辑:我发现一个代码 ASWP_ONLYCAM 只允许相机作为唯一输入!但我不知道如何激活它!附注如果您需要更多信息,请告诉我

最佳答案

正如我所见,您正在使用 Android SmartWebView .

我想你用 here (ProgramCreek) 中的代码来支持自己,因为到目前为止您的方法是相同的。如果是这样,ASWP_FUPLOADASWP_CAMUPLOAD 都需要为 true,因为 ASWP_CAMUPLOAD 取决于在 ASWP_FUPLOAD 上。

然后,您需要进入MainActivity。在 asw_view.setWebChromeClient() 内,您应该有这些空白:

public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,WebChromeClient.FileChooserParams fileChooserParams)

这是您的照片管理的逻辑。第一个与 Android API 16+ 兼容,第二个与 21+ 兼容。

现在,从 API 16+(第一种方法)开始,我看不到直接的解决方案。您可以使用 this thread 中的一个。第二种方法很容易编辑。您有 if 语句验证 ASWP_CAMUPLOADASWP_FUPLOAD。在 ASWP_CAMUPLOAD 验证结束时,您会看到:

if(ASWP_CAMUPLOAD) {
//...
} else {
intentArray = new Intent[0];
}

返回 false 而是,因此文件上传本身应该被取消,相机上传将成为唯一的解决方案。

关于java - "Choose File"更改权限后按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59823066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com