Java 正在下载apk,但没有此类文件或目录错误。。
我正在创建一个应用程序,从Web服务器下载apk文件,然后安装它,但我遇到了一个问题,当我单击“下载”时,进度条会进行比较,但不会更改,并且在Android监视器中会进行比较: 我用的是安卓7.1.1的avd,我要试试棉花糖。 代码如下:Java 正在下载apk,但没有此类文件或目录错误。。,java,android,download,Java,Android,Download,我正在创建一个应用程序,从Web服务器下载apk文件,然后安装它,但我遇到了一个问题,当我单击“下载”时,进度条会进行比较,但不会更改,并且在Android监视器中会进行比较: 我用的是安卓7.1.1的avd,我要试试棉花糖。 代码如下: try { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { String sdPath = Environment.getEx
try {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String sdPath = Environment.getExternalStorageDirectory() + "/";
mSavePath = sdPath + "updateDownload";
File dir = new File(mSavePath);
if (!dir.exists())
if (dir.mkdir())
Log.d(TAG, "mkdir success");
else
Log.d(TAG, "mkdir failed!");
HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.connect();
InputStream is = conn.getInputStream();
int length = conn.getContentLength();
File apkFile = new File(mSavePath, version_name);
FileOutputStream fos = new FileOutputStream(apkFile);
int count = 0;
byte[] buffer = new byte[1024];
while (!isCancel) {
int numread = is.read(buffer);
count += numread;
mProgress = (int) ((float) (count / length) * 100);
mUpdateProgressHandler.sendEmptyMessage(DOWNLOADING);
if (numread < 0) {
mUpdateProgressHandler.sendEmptyMessage(DOWNDLOAD_FINISHED);
break;
}
fos.write(buffer, 0, numread);
}
fos.close();
is.close();
} else {
Log.d(TAG, " Media not mounted");
}
} catch (Exception e) {
e.printStackTrace();
}
试试看{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
字符串sdPath=Environment.getExternalStorageDirectory()+“/”;
mSavePath=sdPath+“updateDownload”;
文件目录=新文件(mSavePath);
如果(!dir.exists())
if(dir.mkdir())
Log.d(标记为“mkdir成功”);
其他的
Log.d(标记“mkdir失败!”);
HttpURLConnection conn=(HttpURLConnection)新URL(path).openConnection();
连接();
InputStream is=conn.getInputStream();
int length=conn.getContentLength();
文件apkFile=新文件(mSavePath,版本名称);
FileOutputStream fos=新的FileOutputStream(apkFile);
整数计数=0;
字节[]缓冲区=新字节[1024];
而(!isCancel){
int numread=is.read(缓冲区);
计数+=numread;
mProgress=(int)((float)(计数/长度)*100);
mUpdateProgressHandler.sendEmptyMessage(下载);
if(numread<0){
mUpdateProgressHandler.sendEmptyMessage(下载完成);
打破
}
fos.写入(缓冲区,0,numread);
}
fos.close();
is.close();
}否则{
日志d(标签“未安装介质”);
}
}捕获(例外e){
e、 printStackTrace();
}
Android 6.0之后需要运行时权限
请参阅您能检查一下“updateDownload”目录是否存在吗?不,它不存在..就这样。。如果它不存在,您应该创建它:)我创建了,使用这个:if(!dir.exists())if(dir.mkdir())Log.d(标记“mkdir success”);else Log.d(标记“mkdir失败!”);但目录并不存在。关于mkdir,你的日志是怎么说的,也放一些日志来显示完整的路径,这将帮助你调试它