当用户点击我的应用程序的WebView上的标签时,我正试图从assets文件夹中播放声音.我发现我可以使用扩展WebViewClient的新类来检测链接的扩展名,如果是mp3文件,它可以通过默认的音频播放器播放.但是我想让它在没有开始新活动的情况下在活动中发挥作用.
我使用以下链接作为参考: Webview中的声音 和使用Uri创建MediaPlayer或使用资产中的文件时出错
但它没有用.
我尝试使用以下代码执行此操作:
package com.rangga.test.webview.sound;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebViewClient extends WebViewClient{
public MediaPlayer mp;
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if(url.endsWith(".mp3")){
mp = new MediaPlayer();
AssetFileDescriptor afd = getAssets().openFd(url);
mp.setDataSource(afd.getFileDescriptor());
mp.start();
return true;
}else{
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在getAssets()上得到一个未定义的方法错误,我尝试了谷歌它,它说了一些关于传递一个Context的事情.我是Android和面向对象编程的新手,所以我想知道这是否是正确的方法,以及是否有关于Context是什么的简单解释.谢谢.
以下是我的完整代码:
MainActivity.class
package com.rangga.test.webview.sound;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webMain;
/** Called when the activity is …Run Code Online (Sandbox Code Playgroud)