我正在构建我的第一个Android应用程序并遇到问题。基本上我试图将我用PHP构建的Youtube 2 Mp3页面移植到移动应用程序中。我已成功完成此操作,但我遇到的问题是转换为mp3后我无法从Android应用程序页面上打印的链接下载mp3文件。它直接从网页工作正常,如果我有应用程序加载orroids默认浏览器(Chrome)中的链接,它工作正常,但当我让应用程序加载WebView中的链接时,它不起作用。
文件:MainActivity.java
public class MainActivity extends AppCompatActivity {
WebView web;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
web = (WebView) findViewById(R.id.webView);
web.setWebViewClient(new myWebClient());
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl("http://www.bigjohn863.com/youtubetomp3/index.php");
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
public class myWebClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
}
WEBPAGE:http://www.bigjohn863.com/youtubetomp3/index.php
网页在常规浏览器中加载时按预期工作,如果我在Android默认浏览器(Chrome)中使用它,它可以正常工作,但如果我将代码更改为仅在webview中加载点击链接,那么当我点击链接时什么都不做。
答案 0 :(得分:2)
在验证shouldOverrideUrlLoading(WebView view, String url)
后,尝试将其添加到您的函数url
。它将开始下载,类似于从任何网页下载
if (url.endsWith(".mp3")) {
Uri source = Uri.parse(url);
// Make a new request pointing to the .mp3 url
DownloadManager.Request request = new DownloadManager.Request(source);
// appears the same in Notification bar while downloading
request.setDescription("Description for the DownloadManager Bar");
request.setTitle("YourMp3.mp3");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
// save the file in the "Downloads" folder of SDCARD
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "MyMp3.mp3");
// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
答案 1 :(得分:0)
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?mp3=' + encodeURI(songFile) + '">Download your MP3 file</a>
此代码将在android web视图中无效,因为它包含PHP代码,PHP代码是服务器端代码,而android web视图只能运行客户端代码。
如果你想运行它,那么从服务器获取数据作为URL并将其放入锚标记中,或者你可以尝试将完整的硬代码URL放在锚标记内。