模拟下载的文件是在我电脑上的,单独在浏览器可以打开下载的
在模拟器中报错:java.io.IOException:open failed:EACCES(Permission denied)
在我的nexus5 中报错:java.io.IOException:stack size 1036KB
控制台报错:E/RetryHandler.retryRequest(L:91)(11812): retry error, curr request is null
是xutils框架的问题吗?求高手解答啊
权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
xutils的使用代码:
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
HttpUtils http = new HttpUtils();
HttpHandler handler = http.download("http://192.168.0.254:8080/apkupdate/xxx.apk",
Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/xxx.apk", true, // 如果目标文件存在,接着未完成的部分继续下载。服务器不支持RANGE时将从新下载。
true, // 如果从请求返回信息中获取到文件名,下载完成后自动重命名。
new RequestCallBack<File>() {
@Override
public void onStart() {
}
@Override
public void onLoading(long total, long current,
boolean isUploading) {
tv_update.setVisibility(View.VISIBLE);
tv_update.setText("更新进度 " + (current * 100 / total)
+ "%");
}
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
// File f = responseInfo.result;
// installApk(f);
tv_update.setVisibility(View.VISIBLE);
tv_update.setText("downloaded:" + responseInfo.result.getPath());
}
@Override
public void onFailure(HttpException error, String msg) {
Log.e(TAG, msg);
tv_update.setVisibility(View.VISIBLE);
tv_update.setText(msg);
enterHome();
}
});
} else {
Toast.makeText(SplashActivity.this, "试试插上SD卡吧", 0).show();
return;
}
------解决思路----------------------
nexus5的android系统是5.0的吗?如果是5.0的话去github下载最新的xUtils包试试
------解决思路----------------------
第一个是不是模拟器的sd card没有设置size导致的呢?因为你有权限了
第二个,貌似是xutil的bug,github上有人反馈过了,是在5.0……
https://github.com/wyouflf/xUtils/issues/81