android - android webview访问媒体文件问题
问题描述
大家好,我正在尝试制作一个应用程序,只需上传一个网页即可转换文件类型。但即使在 manifest.xml 上获得了所需的权限,我也无法通过 webview 访问我的文件。这是我的主要活动代码。无论我多么努力地尝试实施解决方案,我都无法做到。你能帮帮我吗?在此先感谢。
public class MainActivity extends AppCompatActivity {
public static boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
String ShowOrHideWebViewInitialUse = "show";
private WebView webview ;
private ProgressBar spinner;
String myurl = "https://pdftoimage.com/tr/"; //buraya görüntülemek istenen url yazılmalı
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
protected void onCreate(Bundle savedInstanceState) {
int PERMISSION_ALL = 1;
String[] PERMISSIONS = {
android.Manifest.permission.CAMERA,
android.Manifest.permission.RECORD_AUDIO,
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview =(WebView)findViewById(R.id.webView);
spinner = (ProgressBar)findViewById(R.id.progressBar1);
WebSettings settings = webview.getSettings();
webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
settings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36");
webview.setWebViewClient(new CustomWebViewClient());
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setSupportZoom(true);
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webview.loadUrl(myurl);
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onPermissionRequest(final PermissionRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
request.grant(request.getResources());
}
}
});
}
解决方案
推荐阅读
- javascript - 在 React Native 中使用返回无法访问的代码
- ruby-on-rails - 为包含的方法调用 super 会导致“无超类方法”错误 - ActiveSupport
- python - WebScraping w/ Beautiful Soup:如何返回列表中的空元素?
- assembly - AVR 程序集 - 要屏蔽的位数
- c# - C# .NET:将 SQLite 表加载到数据网格
- r - 考虑周期的虚拟变量和第三个变量创建新的data.frame
- javascript - 有没有办法动态引用用 let 和 const 声明的变量
- python - SimpleITK 读取 io.ByteIO
- c# - 无法加载一种或多种请求的类型。\r\n无法加载文件或程序集 'System.Data.SqlClient, Version=4.6.1.0
- r - R shiny - 如何使用 par() 更改基本图形的系列字体?