Java 使用Android WebView存储的音频文件不工作

Java 使用Android WebView存储的音频文件不工作,java,android,webview,android-webview,Java,Android,Webview,Android Webview,我正在尝试使用android webview将音频文件二进制字符串存储到SD卡中。但是,当我尝试在移动文件管理器中播放音频文件时,该音频文件无法播放。我使用JavaScript接口获取音频文件二进制数据并将其保存到SD卡中。我不想使用android下载管理器或其他下载管理器来下载文件。我需要修复下面发布的音频播放代码 以下是代码: import androidx.appcompat.app.AppCompatActivity; import android.os.Build; import an

我正在尝试使用android webview将音频文件二进制字符串存储到SD卡中。但是,当我尝试在移动文件管理器中播放音频文件时,该音频文件无法播放。我使用JavaScript接口获取音频文件二进制数据并将其保存到SD卡中。我不想使用android下载管理器或其他下载管理器来下载文件。我需要修复下面发布的音频播放代码

以下是代码:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Build;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.text.Html;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private ProgressDialog mProgressDialog;
    private WebView MCwv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String urlText ="http://susbd.com/bd.php?url=http://banglasongs.fusionbd.com/downloads/download.php?file=mp3/bangla/Romantic_Hitz/Tip_Tip_Brishti-Konika.mp3";
        mProgressDialog = ProgressDialog.show(this, "", "Getting String...");
        MCwv = (WebView) findViewById(R.id.mcwv);
        WebSettings settings = MCwv.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setUserAgentString("Opera/9.80 (Android; Opera Mini/36.2.2254/119.132; U; id) Presto/2.12.423 Version/12.16)");
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(true);
        settings.setDisplayZoomControls(false);
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);
        settings.setAllowFileAccess(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setLoadsImagesAutomatically(true);
        settings.setDefaultTextEncodingName("utf-8");
        settings.setDomStorageEnabled(true);
        settings.setPluginState(WebSettings.PluginState.ON);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }

        MCwv.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

        MCwv.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url)
            {
                MCwv.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerHTML);");
                mProgressDialog.dismiss();
            }
        });

        MCwv.loadUrl(urlText);
    }

    public class MyJavaScriptInterface
    {
        @JavascriptInterface
        @SuppressWarnings("unused")
        public void showHTML(String OutPut)
        {
            try {
                File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/mydl");
                if (!dir.exists()) {
                    dir.mkdirs();
                }

                File file = new File(dir, "This_my_test_file.mp3");
                if (!file.exists()) {
                    file.createNewFile();
                }

                FileOutputStream save = new FileOutputStream(file);
                save.write(Html.fromHtml(OutPut).toString().substring(6).getBytes()); //html decoded and removed 6 string <html>
                save.flush();
                save.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
导入androidx.appcompat.app.appcompat活动;
导入android.os.Build;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.os.Environment;
导入android.text.Html;
导入android.view.view;
导入android.webkit.JavascriptInterface;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
公共类MainActivity扩展了AppCompatActivity{
private ProgressDialog mProgressDialog;
私有网络视图MCwv;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串urlText=”http://susbd.com/bd.php?url=http://banglasongs.fusionbd.com/downloads/download.php?file=mp3/bangla/Romantic_Hitz/Tip_Tip_Brishti-Konika.mp3”;
mProgressDialog=ProgressDialog.show(这个,“,“获取字符串…”);
MCwv=(WebView)findviewbyd(R.id.MCwv);
WebSettings=MCwv.getSettings();
settings.setJavaScriptEnabled(true);
setUserAgentString(“Opera/9.80(Android;Opera Mini/36.2.2254/119.132;U;id)Presto/2.12.423版本/12.16)”;
settings.setUseWideViewPort(true);
settings.setLoadWithOverview模式(true);
设置。设置支持缩放(真);
settings.setBuilTinZoomControl(true);
settings.setDisplayZoomControl(false);
settings.setCacheMode(WebSettings.LOAD_默认值);
settings.setAllowFileAccess(true);
setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLoadsImagesAutomatically(true);
setDefaultTextEncodingName(“utf-8”);
settings.setDomStorageEnabled(true);
settings.setPluginState(WebSettings.PluginState.ON);
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.LOLLIPOP){
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_始终允许);
}
addJavascriptInterface(新的MyJavaScriptInterface(),“HTMLOUT”);
MCwv.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url)
{
loadUrl(“javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerHTML);”;
mProgressDialog.disclose();
}
});
MCwv.loadUrl(urlText);
}
公共类MyJavaScriptInterface
{
@JavascriptInterface
@抑制警告(“未使用”)
公共void showHTML(字符串输出)
{
试一试{
File dir=新文件(Environment.getExternalStorageDirectory().getAbsolutePath()+“/mydl”);
如果(!dir.exists()){
dir.mkdirs();
}
File File=新文件(dir,“This_my_test_File.mp3”);
如果(!file.exists()){
createNewFile();
}
FileOutputStream保存=新的FileOutputStream(文件);
save.write(Html.fromHtml(OutPut.toString().substring(6.getBytes());//Html解码并删除了6个字符串
save.flush();
save.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}