Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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
如何使用改型android取消下载?_Android_Retrofit_Retrofit2_Android Download Manager - Fatal编程技术网

如何使用改型android取消下载?

如何使用改型android取消下载?,android,retrofit,retrofit2,android-download-manager,Android,Retrofit,Retrofit2,Android Download Manager,我有一个应用程序,可以使用改型从服务器下载文件…..在我的xml布局上,我有两个按钮,如果你点击它们,它们会发送不同的参数来下载不同的文件 这部分工作正常,我点击其中一个,程序开始下载文件和其他按钮,当第一个文件完成后,它会下载第二个文件。我也有一个 cancel按钮(取消下载)问题是cancel按钮只工作一次,我认为这是因为每次它都会创建一个带有id的新“下载” 所以,如果我点击下载1,然后点击下载2,然后点击取消,我只能取消下载2 我的问题是,是否可以确定要取消的文件 <But

我有一个应用程序,可以使用改型从服务器下载文件…..在我的xml布局上,我有两个按钮,如果你点击它们,它们会发送不同的参数来下载不同的文件 这部分工作正常,我点击其中一个,程序开始下载文件和其他按钮,当第一个文件完成后,它会下载第二个文件。我也有一个 cancel按钮(取消下载)问题是cancel按钮只工作一次,我认为这是因为每次它都会创建一个带有id的新“下载”

所以,如果我点击下载1,然后点击下载2,然后点击取消,我只能取消下载2

我的问题是,是否可以确定要取消的文件

    <Button
        android:id="@+id/btn_download"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="128dp"
        android:layout_marginLeft="128dp"
        android:layout_marginTop="36dp"
        android:text="Download"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn_download2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="128dp"
        android:layout_marginLeft="128dp"
        android:layout_marginTop="124dp"
        android:text="Download 2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <Button
        android:id="@+id/btn_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="140dp"
        android:layout_marginLeft="140dp"
        android:layout_marginTop="196dp"

        android:text="Cancel"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />



 private void downloadFile(final String fileName, String f_id, final String id) {
        Retrofit.Builder builder = new Retrofit.Builder().baseUrl("mywebsite/api/")
                .addConverterFactory(ScalarsConverterFactory.create())
                .addConverterFactory(GsonConverterFactory.create());
        Retrofit retrofit = builder.build();

        FileDownloadClient fileDownloadClient = retrofit.create(FileDownloadClient.class);

        final String fileName = fileName;
        final String f_id   = f_id;

        Map<String, Object> postdata = new HashMap<>();
        postdata.put("Parametros", "aquii")
        postdata.put("Parametros", "aquii")
        postdata.put("Parametros", "aquii")

        final Call<ResponseBody> call = fileDownloadClient.downloadFileStream(postdata);

        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) {

                    sendOnChannel2("Download", "Download in progress", 2000, id);

                    new AsyncTask<Void, Void, Void>() {
                        @Override
                        protected Void doInBackground(Void... voids) {
                            boolean success = writeResponseBodyToDisk(response.body(), fileName, id);
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    cancelButton.setVisibility(View.GONE);
                                    Toast.makeText(MainActivity.this, "Download Complete", Toast.LENGTH_LONG).show();
                                }
                            });
                            return null;
                        }
                    }.execute();
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                if(call.isCanceled()) {
                    Toast.makeText(MainActivity.this, "Request Cancelled :( ", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(MainActivity.this, "Download failed :(", Toast.LENGTH_LONG).show();
                }
            }
        });

        cancelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                call.cancel();
                cancelNotification("Download", "Download cancelled", 0, id);
            }
        });
    }

私有void下载文件(最终字符串文件名、字符串f_id、最终字符串id){
reformation.Builder=new reformation.Builder().baseUrl(“mywebsite/api/”)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create());
改装改装=builder.build();
FileDownloadClient FileDownloadClient=reformation.create(FileDownloadClient.class);
最终字符串文件名=文件名;
最终字符串f_id=f_id;
Map postdata=newhashmap();
postdata.put(“Parametros”、“aquii”)
postdata.put(“Parametros”、“aquii”)
postdata.put(“Parametros”、“aquii”)
最终调用=fileDownloadClient.downloadFileStream(postdata);
call.enqueue(新回调(){
@凌驾
公共void onResponse(呼叫、最终响应){
SendonChannel 2(“下载”,“正在下载”,2000年,id);
新建异步任务(){
@凌驾
受保护的空位背景(空位…空位){
布尔成功=writeResponseBodyToDisk(response.body(),文件名,id);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
cancelButton.setVisibility(View.GONE);
Toast.makeText(MainActivity.this,“下载完成”,Toast.LENGTH_LONG.show();
}
});
返回null;
}
}.execute();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
if(调用.isCanceled()){
Toast.makeText(MainActivity.this,“请求已取消:(”,Toast.LENGTH_LONG.show();
}否则{
Toast.makeText(MainActivity.this,“下载失败:(”,Toast.LENGTH_LONG.show();
}
}
});
cancelButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
call.cancel();
取消通知(“下载”,“下载已取消”,0,id);
}
});
}