java - 如何显示带有MySQL表路径的图像?

标签 java android

请帮助我。 我在使用我得到的响应路径显示 MYSQL 表中的图像时遇到问题。 登录后,我想显示在用户表中同一记录中找到的用户图像。 我的 java Activity 和 XML 文件是:

public class HomeActivity extends AppCompatActivity {

private static final String TAG = HomeActivity.class.getSimpleName(); //getting the info
private TextView name, email,photo;
private Button btn_logout, btn_photo_upload;
SessionManager sessionManager;
String getId;
private static String URL_READ = "http://172.23.50.55/CP/read_detail.php";
private static String URL_EDIT = "http://172.23.50.55/CP/edit_detail.php";
private static String URL_UPLOAD = "http://172.23.50.55/CP/upload.php";
private Menu action;
private Bitmap bitmap;
CircleImageView profile_image;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    sessionManager = new SessionManager(this);
    sessionManager.checkLogin();

    name = findViewById(R.id.name);
    email = findViewById(R.id.email);
    photo = findViewById(R.id.photo);
    btn_logout = findViewById(R.id.btn_logout);
    btn_photo_upload = findViewById(R.id.btn_photo);


    HashMap<String, String> user = sessionManager.getUserDetail();
    getId = user.get(sessionManager.ID);

    btn_logout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sessionManager.logout();
        }
    });

    btn_photo_upload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            chooseFile();
        }
    });

}

//getUserDetail
private void getUserDetail(){

    final ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Loading...");
    progressDialog.show();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_READ,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismiss();
                    Log.i(TAG, response.toString());

                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");
                        JSONArray jsonArray = jsonObject.getJSONArray("read");

                        if (success.equals("1")){

                            for (int i =0; i < jsonArray.length(); i++){

                                JSONObject object = jsonArray.getJSONObject(i);

                                String strName = object.getString("name").trim();
                                String strEmail = object.getString("email").trim();
                              //  System.out.println("pspspspspspspspspspspspspspsp " + strEmail);
                                String strPhoto = object.getString("photo").trim();

                                name.setText(strName);
                                email.setText(strEmail);
                                photo.setText(strPhoto);

                            }

                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                        progressDialog.dismiss();
                        Toast.makeText(HomeActivity.this, "Error Reading Detail "+e.toString(), Toast.LENGTH_SHORT).show();
                    }

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressDialog.dismiss();
                    Toast.makeText(HomeActivity.this, "Error Reading Detail "+error.toString(), Toast.LENGTH_SHORT).show();
                }
            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String > params = new HashMap<>();
            params.put("id", getId);
            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

@Override
protected void onResume() {
    super.onResume();
    getUserDetail();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.menu_action, menu);

    action = menu;
    action.findItem(R.id.menu_save).setVisible(false);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()){
        case R.id.menu_edit:

            name.setFocusableInTouchMode(true);
            email.setFocusableInTouchMode(true);

            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(name, InputMethodManager.SHOW_IMPLICIT);

            action.findItem(R.id.menu_edit).setVisible(false);
            action.findItem(R.id.menu_save).setVisible(true);

            return true;

        case R.id.menu_save:

            SaveEditDetail();

            action.findItem(R.id.menu_edit).setVisible(true);
            action.findItem(R.id.menu_save).setVisible(false);

            name.setFocusableInTouchMode(false);
            email.setFocusableInTouchMode(false);
            name.setFocusable(false);
            email.setFocusable(false);

            return true;

        default:

            return super.onOptionsItemSelected(item);

    }
}

//save
private void SaveEditDetail() {

    final String name = this.name.getText().toString().trim();
    final String email = this.email.getText().toString().trim();
    final String id = getId;
    final String photo = this.photo.getText().toString().trim();
    final ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Saving...");
    progressDialog.show();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_EDIT,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismiss();

                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");

                        if (success.equals("1")){
                            Toast.makeText(HomeActivity.this, "Success!", Toast.LENGTH_SHORT).show();
                            System.out.println("popopopopopopopopopopo");
                            sessionManager.createSession(name, email, id, photo);
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                        progressDialog.dismiss();
                        Toast.makeText(HomeActivity.this, "Error "+ e.toString(), Toast.LENGTH_SHORT).show();
                    }

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressDialog.dismiss();
                    Toast.makeText(HomeActivity.this, "Error "+ error.toString(), Toast.LENGTH_SHORT).show();
                }
            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("name", name);
            params.put("email", email);
            params.put("photo",photo);
            params.put("id", id);
            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

private void chooseFile(){
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri filePath = data.getData();
        try {

            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            profile_image.setImageBitmap(bitmap);

        } catch (IOException e) {
            e.printStackTrace();
        }

        UploadPicture(getId, getStringImage(bitmap));

    }
}

private void UploadPicture(final String id, final String photo) {

    final ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Uploading...");
    progressDialog.show();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_UPLOAD,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismiss();
                    Log.i(TAG, response.toString());
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");

                        if (success.equals("1")){
                            Toast.makeText(HomeActivity.this, "Success!", Toast.LENGTH_SHORT).show();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                        progressDialog.dismiss();
                        Toast.makeText(HomeActivity.this, "Try Again!"+e.toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressDialog.dismiss();
                    Toast.makeText(HomeActivity.this, "Try Again!" + error.toString(), Toast.LENGTH_SHORT).show();
                }
            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("id", id);
            params.put("photo", photo);

            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);


}

public String getStringImage(Bitmap bitmap){

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);

    byte[] imageByteArray = byteArrayOutputStream.toByteArray();
    String encodedImage = Base64.encodeToString(imageByteArray, Base64.DEFAULT);
    System.out.println("encodedImage  " + encodedImage);
    return encodedImage;

}

}

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeActivity">

<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/photo"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="50dp"

    />

<Button
    android:id="@+id/btn_photo"
    style="@style/Widget.AppCompat.ActionButton.CloseMode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/photo"
    android:layout_centerHorizontal="true"
    android:text="Edit Photo" />

<LinearLayout
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_below="@id/btn_photo"
    android:weightSum="2"
    android:id="@+id/layout_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:src="@drawable/ic_name"
        android:layout_weight="1"
        android:layout_width="70dp"
        android:layout_height="50dp" />

    <EditText
        android:id="@+id/name"
        android:hint="Name"
        android:inputType="textPersonName"
        android:layout_marginLeft="10dp"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

<LinearLayout
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_below="@id/layout_text"
    android:weightSum="2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:src="@drawable/ic_email"
        android:layout_weight="1"
        android:layout_width="70dp"
        android:layout_height="50dp" />

    <EditText
        android:id="@+id/email"
        android:hint="Email"
        android:inputType="textPersonName"
        android:layout_marginLeft="10dp"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

<Button
    android:layout_alignParentBottom="true"
    android:id="@+id/btn_logout"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginBottom="30dp"
    android:textColor="@android:color/white"
    android:backgroundTint="@color/colorPrimary"
    android:text="Logout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

请任何人可以帮助我详细说明。 我使用 android studio 和 xamp 服务器。 该表包含:id、姓名、电子邮件、密码、照片(路径)

最佳答案

onActivityResult 事件中,您已经获取了图像 URI。使用 setImageURI 方法。

Uri filePath = data.getData();
imageView.setImageURI(uri);

关于java - 如何显示带有MySQL表路径的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439347/

相关文章:

java - 尝试暂时停止使用代码 "break()"进行下一个 Activity 。为什么这不起作用?

android - Firebase 配置 : ClassNotFoundException

java - 如何在 Android/Eclipse 中为 pro 和 lite 创建 2 个具有相同名称的 jar

java - 使用自定义 UI 显示相机 View

java - 在将 Quarkus Hibernate Reactive 与 quarkus-reactive-client 一起使用时如何使用一些阻止方法?

java - 远程连接到 JBoss 7.1.1 MBean

java - spring kafka 一个消费者消费多种Message类型

java - 在请求负载中设置字符串列表

java - GSON 不检索 linkedHashMap<object, String> 中的键作为对象。取而代之的是作为 String 检索

java - Android 8.1 带通知 : Use of stream types is deprecated