Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在下载apk,但没有此类文件或目录错误。。_Java_Android_Download - Fatal编程技术网

Java 正在下载apk,但没有此类文件或目录错误。。

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

我正在创建一个应用程序,从Web服务器下载apk文件,然后安装它,但我遇到了一个问题,当我单击“下载”时,进度条会进行比较,但不会更改,并且在Android监视器中会进行比较:

我用的是安卓7.1.1的avd,我要试试棉花糖。 代码如下:

    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,你的日志是怎么说的,也放一些日志来显示完整的路径,这将帮助你调试它