Java 如何从字符串实例化Uri?

Java 如何从字符串实例化Uri?,java,android,hashmap,base64,Java,Android,Hashmap,Base64,在发送到服务器之前,将Uri图像转换为Base64字符串的正确方法是什么 public void update( final String claimType, final String Amount, final String Description, final String imageUri) { class updateImageAndText extends AsyncTask<Void,Void,String>{

在发送到服务器之前,将
Uri
图像转换为
Base64字符串的正确方法是什么

public void update( final String claimType,  final String Amount, final String Description, final String imageUri)
    {
           class updateImageAndText extends AsyncTask<Void,Void,String>{
              // ProgressDialog loading;
               @Override
               protected void onPreExecute() {
                   super.onPreExecute();
                  // loading = ProgressDialog.show(Edit_Staff.this,"Updating...","Wait...",false,false);
               }

               @Override
               protected void onPostExecute(String s) {
                   super.onPostExecute(s);
                  // loading.dismiss();
                   Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
                   try {
                       Intent returnIntent = new Intent();
                       returnIntent.putExtra("ClaimType", claimType);
                       returnIntent.putExtra("Amount", Amount);
                       returnIntent.putExtra("Description", Description);
                       returnIntent.putExtra("photo", imageUri);
                       setResult(Activity.RESULT_OK, returnIntent);
                       finish();
                   }catch(Exception e)
                   {

                   }
               }

               @Override
               protected String doInBackground(Void... params) {
                   HashMap<String,String> hashMap = new HashMap<>();
                   hashMap.put(Configs.KEY_ID, String.valueOf(ID));
                   Log.e("ID", ID + "");
                   hashMap.put(Configs.KEY_TYPE, claimType);
                   hashMap.put(Configs.KEY_AMOUNT, Amount);
                   hashMap.put(Configs.KEY_DESCRIPTION, Description);
                   if(imageUri != null){
                       Log.d("log", "photo " + imageUri);
                       hashMap.put(Configs.KEY_IMAGE,getStringImage(imageUri)); // error
                   }else{
                       Log.d("log", "photo is null " );
                   }
                   RequestHandler rh = new RequestHandler();
                   String s = rh.sendPostRequest(Configs.URL_UPDATEDE_IMAGE_TEXT,hashMap);
                   return s;
               }
           }

        updateImageAndText ue = new updateImageAndText();
        ue.execute();
    }

 public String getStringImage(Uri imgUri) {

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imgUri);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] imageBytes = baos.toByteArray();
            String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
            return encodedImage;
        } catch (Exception e) {
        }

        return "";
    }

在更新中,您将imageUri作为字符串传递:

public void update( final String claimType,  final String Amount, final String Description, final String imageUri)  

hashMap.put(Configs.KEY_IMAGE,getStringImage(imageUri)); // error because imageUri is a String
但您的方法需要Uri而不是字符串:

public String getStringImage(Uri imgUri){...}

在更新中,您将imageUri作为字符串传递:

public void update( final String claimType,  final String Amount, final String Description, final String imageUri)  

hashMap.put(Configs.KEY_IMAGE,getStringImage(imageUri)); // error because imageUri is a String
但您的方法需要Uri而不是字符串:

public String getStringImage(Uri imgUri){...}

您可能需要
hashMap.put(Configs.KEY_IMAGE,getStringImage(newuri(imageUri))
@wero-uri是一个抽象的,不能实例化我的错,我以为你说的是
java.net.uri
。无论如何,您的问题似乎是如何从字符串实例化Uri(无论这是什么类)。所以问题的标题和内容有点误导imho@wero很抱歉写错了问题标题。如果
Uri
是一个
android.net.Uri
你需要
Uri.parse(imageUri)
你可能需要
hashMap.put(Configs.KEY\u IMAGE,getStringImage(new Uri(imageUri))
@wero-uri是一个抽象的,不能实例化我的错,我以为你说的是
java.net.uri
。无论如何,您的问题似乎是如何从字符串实例化Uri(无论这是什么类)。所以问题的标题和内容有点误导imho@wero我很抱歉写错了问题标题。如果
Uri
是一个
android.net.Uri
您需要
Uri.parse(imageUri)
在更新方法中将“final String imageUri”更改为“final Uri imageUri”,并尝试在更新方法中将“final String imageUri”更改为“最终Uri imageUri”并尝试