У меня есть веб-просмотр в моем приложении, чтобы показать ссылку на facebook, теперь я хочу сохранить страницу в файл html и сохранить на SD-карте, когда в автономном режиме приложение загрузит эту страницу пользователю. Но я не могу его скачать? Не знаю почему. Я использую асинхронную задачу для загрузки и тоста по окончании, но ничего не показывает. Вот мой код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById();
if (isNetworkConnected()) {
mWebView.clearCache(true);
mWebView.setWebViewClient(new myWebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(downloadUrl);
new DownloadFile().execute();
} else {
mWebView.loadUrl(Environment.getExternalStorageDirectory().toString() +
"/Android/data/hao.com.webviewdemo/" + "webpage.html");
}
}
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null;
}
private class DownloadFile extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... sUrl) {
try {
URL url = new URL(downloadUrl);
URLConnection connection = url.openConnection();
connection.connect();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory().toString() +
"/Android/data/hao.com.webviewdemo/" + "webpage.html");
byte data[] = new byte[1024];
int count;
try {
while ((count = input.read(data)) != -1)
output.write(data, 0, count);
} catch (IOException e) {
e.printStackTrace();
}
output.flush();
output.close();
input.close();
Toast.makeText(MainActivity.this, "File downloaded", Toast.LENGTH_SHORT).show();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return null;
}
}
мое разрешение в манифесте:
<uses-permission android:name = "android.permission.INTERNET" />
<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" />
Я добавил разрешение в своем посте
Получили ли вы от него пользу? Или просто добавили?
Также проверьте правильность пути к файлу и его обнаружение. Перепроверьте ссылку.
Я добавил его в Manifest, путь просто скопирован из файлового проводника Devide
Вы пробовали этот способ загрузки веб-страницы?
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
Надеюсь помочь вам
У вас есть разрешение на чтение данных с sd-карты?