我对多重任务有问题。所有东西都在API较低的设备上运行,但是当设备有android 8或更高版本时,当我想将文件上传到服务器时,它会一直给我错误(“上传时出错”)。在android 8的设备上,它开始发送,但当进度达到100%时,它会给出错误(在android 9的设备上,它甚至不会启动,开始上传时出错)。我以为一切都是因为前台服务缺少通知造成的,但添加时问题仍然出现。
我看到了类似的主题,比如这个(multipartupladRequest(上传时出错)android 10),但它对我没有帮助,因为我使用的是api 18-28,还有这个android 9文件上传(multipartupladRequest)错误,但我已经有了这个权限。
我的代码:
private void uploadMultipart(final Context context){
try{
MultipartUploadRequest uploadRequest = new MultipartUploadRequest(context,SERVER_URL)
.setUtf8Charset()
.setMethod("POST")
.setMaxRetries(0)
.setNotificationConfig(new UploadNotificationConfig())
.addFileToUpload(zipDir.getAbsolutePath()+"/"+emailAddress+".zip","file")
.setDelegate(new UploadStatusDelegate() {
@Override
public void onProgress(Context context, UploadInfo uploadInfo)
{
// Log.i("Progress", String.valueOf(uploadInfo.getProgressPercent()));
asyncResponse.returnProgress(uploadInfo.getProgressPercent());
}
@Override
public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, Exception exception) {
// Log.i("error","error");
asyncResponse.returnHttpStatus(50);
}
@Override
public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) {
asyncResponse.returnHttpStatus(serverResponse.getHttpCode());
// Log.i("SEND DONE", String.valueOf(serverResponse.getHttpCode()));
}
@Override
public void onCancelled(Context context, UploadInfo uploadInfo) {
// Log.i("Progress","Cancelled");
}
});
.addParameter("email",emailAddress);
// For Android > 8, we need to set an Channel to the UploadNotificationConfig.
// So, here, we create the channel and set it to the MultipartUploadRequest
mNotificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
// Android O requires a Notification Channel.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "SPN";
// Create the channel for the notification
NotificationChannel mChannel =
new NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_DEFAULT);
// Set the Notification Channel for the Notification Manager.
mNotificationManager.createNotificationChannel(mChannel);
}
uploadRequest.startUpload();
}
catch (Exception e){
errorInSending=true;
}
}
我在asynctask中运行这个函数(在doinbackground函数中)。打电话后 uploadRequest.startUpload();
它去了一个错误。
我正在使用这个lib的3.4.2版本(https://github.com/gotev/android-upload-service).
暂无答案!
目前还没有任何答案,快来回答吧!