Сегодня у меня была такая же ошибка, но проблема была совсем не такой. Я использую ADB с Android, установленным в VirtualBox. Я попытался установить разные версии своего приложения (подписанный / не подписанный, режим отладки / выпуска) и получил две ошибки: INSTALL_FAILED_UID_CHANGED
и INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
.
Теперь, глядя на /data/data/{package.name}
Я обнаружил кучу файлов, которые все еще были там после удаления приложения. Я попытался rm -rf
их без успеха: у меня были ошибки ввода / вывода.
Решение было:
vdfuse
(чтение / запись) Partition1
с помощью e2fsck
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK)
when(requestCode){
GALLERY -> {
val selectedImage= data!!.data
val bitmap = MediaStore.Images.Media.getBitmap(context!!.contentResolver, selectedImage)
avatar.setImageBitmap(bitmap)
val file = File(getRealPathFromURI(selectedImage))
val id = RequestBody.create(MediaType.parse("text/plain"), userID.toString())
val reqBody = RequestBody.create(MediaType.parse("image/jpeg"), file)
val body = MultipartBody.Part.createFormData("file", file.name, reqBody)
val api = RetrofitClient.getInstance().apiService
val call = api!!.uploadImage(id, body)
call.enqueue(object: Callback<ResponseBody>{
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
Toast.makeText(context, t.message, Toast.LENGTH_SHORT).show()
println("Failure")
}
override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
if (response.isSuccessful){
println("Successful " + response.body()?.string())
}else{
response.errorBody()?.string()
println("Error " + response.headers().toString())
}
}
})
}
CAMERA -> {
//code here
}
}
}
И в интерфейсе API:
@Multipart
@POST("avatar")
fun uploadImage(
@Part("userID") user_ID: RequestBody,
/*@Part("file") name: RequestBody*/
@Part image: MultipartBody.Part) : Call<ResponseBody>