簡體   English   中英

將圖片從圖庫上傳到android中的服務器

[英]Upload Image from gallery to server in android

我正在創建一個 android 應用程序。 我需要實現一個代碼,用於從圖庫或通過從相機捕獲上傳個人資料圖片。單擊要上傳圖片的部分時將顯示警報。 它由三個選項組成 一個從相機拍攝,一個從畫廊拍攝,一個取消。當我嘗試從畫廊上傳圖像時,我可以成功從相機購買的圖像我收到此錯誤

E/MainActivity:來自服務器的響應:java.io.FileNotFoundException:/storage/emulated/0/Pictures/Upload/IMG_20170227_142713.jpg(沒有這樣的文件或目錄)

這是我用於警報構建器的代碼,用於顯示選項以及打開圖片庫或啟動相機

//code to choose profile pic
    iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            /*Toast.makeText(getApplicationContext(),
                    "Please choose a photo", Toast.LENGTH_LONG)
                    .show();*/
            final CharSequence[] items = { "Take Photo", "Choose from Library",
                    "Cancel" };

            AlertDialog.Builder builder = new AlertDialog.Builder(LeftMenusMediaActivity.this);
            builder.setTitle("Add Photo!");
            builder.setItems(items,new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int item) {


                    if (items[item].equals("Take Photo")) {

                        //define the file-name to save photo taken by Camera activity
                        String fileName = "new-photo-name.jpg";
                        //create parameters for Intent with filename
                        ContentValues values = new ContentValues();
                        values.put(MediaStore.Images.Media.TITLE, fileName);
                        values.put(MediaStore.Images.Media.DESCRIPTION,"Image captured by camera");
                        //imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
                        imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
                        //create new Intent
                        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                        imageUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

                        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

                        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
                        startActivityForResult(intent, PICK_Camera_IMAGE);




                    } else if (items[item].equals("Choose from Library")) {


                        try {
                            Intent gintent = new Intent();
                            gintent.setType("image/*");
                            gintent.setAction(Intent.ACTION_GET_CONTENT);

                            startActivityForResult(
                                    Intent.createChooser(gintent, "Select Picture"),
                                    PICK_IMAGE);
                        } catch (Exception e) {
                            Toast.makeText(getApplicationContext(),
                                    e.getMessage(),
                                    Toast.LENGTH_LONG).show();
                            Log.e(e.getClass().getName(), e.getMessage(), e);
                        }



                    } else if (items[item].equals("Cancel")) {
                        dialog.dismiss();
                    }
                }
            });
            builder.show();
        }
    });

這是我的 onActivity 結果函數

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     selectedImageUri = null;
    String filePath = null;
    switch (requestCode) {
        case PICK_IMAGE:
            if (resultCode == Activity.RESULT_OK) {
                selectedImageUri = data.getData();
                // getPath(selectedImageUri);
                launchUploadActivity(true);
                Toast.makeText(this, selectedImageUri.toString(), Toast.LENGTH_SHORT).show();
            }
            break;
        case PICK_Camera_IMAGE:
            if (resultCode == RESULT_OK) {
                //use imageUri here to access the image
                selectedImageUri = imageUri;
                launchUploadActivity(true);
                    /*Bitmap mPic = (Bitmap) data.getExtras().get("data");
                    selectedImageUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), mPic, getResources().getString(R.string.app_name), Long.toString(System.currentTimeMillis())));*/
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show();
            }
            break;
    }

這是我啟動上傳活動的功能

 private void launchUploadActivity(boolean isImage){
    Intent i = new Intent(LeftMenusMediaActivity.this, UploadActivity.class);
    i.putExtra("filePath", selectedImageUri.getPath());
    i.putExtra("isImage", isImage);
    startActivity(i);
}

這是我的上傳活動類

public class UploadActivity extends Activity {
// LogCat tag
private static final String TAG = MainActivity.class.getSimpleName();


private String filePath = null;

long totalSize = 0;

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

    // Changing action bar background color
 /*     getActionBar().setBackgroundDrawable(
            new ColorDrawable(Color.parseColor(getResources().getString(
                    R.color.action_bar))));*/

    // Receiving the data from previous activity
    Intent i = getIntent();

    // image or video path that is captured in previous activity
    filePath = i.getStringExtra("filePath");

    // boolean flag to identify the media type, image or video
    boolean isImage = i.getBooleanExtra("isImage", true);

    if (filePath != null) {
        // Displaying the image or video on the screen
        //previewMedia(isImage);
        new UploadFileToServer().execute();
    } else {
        Toast.makeText(getApplicationContext(),
                "Sorry, file path is missing!", Toast.LENGTH_LONG).show();
    }



}

/**
 * Uploading the file to server
 * */
private class UploadFileToServer extends AsyncTask<Void, Integer, String> {
    @Override
    protected void onPreExecute() {
        // setting progress bar to zero
    //  progressBar.setProgress(0);
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(Void... params) {
        return uploadFile();
    }

    @SuppressWarnings("deprecation")
    private String uploadFile() {
        String responseString = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(AppConfig.URL_PHOTO);

        try {
            AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
                    new AndroidMultiPartEntity.ProgressListener() {


                        @Override
                        public void transferred(long num) {
                            publishProgress((int) ((num / (float) totalSize) * 100));
                        }
                    });


            File sourceFile = new File(filePath);
            ;
            // Adding file data to http body
            entity.addPart("image", new FileBody(sourceFile));

            // Extra parameters if you want to pass to server
            entity.addPart("website",
                    new StringBody("www.androidhive.info"));
            entity.addPart("email", new StringBody("abc@gmail.com"));

            totalSize = entity.getContentLength();
            httppost.setEntity(entity);

            // Making server call

            HttpResponse response = httpclient.execute(httppost);

            HttpEntity r_entity = response.getEntity();

            int statusCode = response.getStatusLine().getStatusCode();

            if (statusCode == 200) {
                // Server response

                responseString = EntityUtils.toString(r_entity);

            } else {
                responseString = "Error occurred! Http Status Code: "
                        + statusCode;
            }

        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }

        return responseString;

    }

    @Override
    protected void onPostExecute(String result) {
        Log.e(TAG, "Response from server: " + result);

        // showing the server response in an alert dialog
        showAlert(result);

        super.onPostExecute(result);

    }

}

/**
 * Method to show alert dialog
 * */
private void showAlert(String message) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(message).setTitle("Response from Servers")
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // do nothing
                }
            });
    AlertDialog alert = builder.create();
    alert.show();
}

}

從畫廊上傳工作需要進行哪些更改

我的應用程序現在正在運行。 我對我的代碼進行了以下更改。

在活動結果部分

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     selectedImageUri = null;

    switch (requestCode) {
        case PICK_IMAGE:
            if (resultCode == Activity.RESULT_OK) {
                selectedImageUri = data.getData();
                imagepath = getPath(selectedImageUri);


                launchUploadActivity2(true);
                Bitmap bitmap=BitmapFactory.decodeFile(imagepath);
                iv.setImageBitmap(bitmap);


                Toast.makeText(this, selectedImageUri.toString(), Toast.LENGTH_SHORT).show();
            }
            break;
        case PICK_Camera_IMAGE:
            if (resultCode == RESULT_OK) {
                //use imageUri here to access the image
                selectedImageUri = imageUri;
                imagepath2=selectedImageUri.getPath();
                launchUploadActivity(true);
                Bitmap bitmap=BitmapFactory.decodeFile(imagepath2);
                iv.setImageBitmap(bitmap);
                Log.d(TAG,selectedImageUri.toString());
                Toast.makeText(this, selectedImageUri.toString(), Toast.LENGTH_SHORT).show();

            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show();
            }
            break;
    }

我制作了兩個單獨的函數來啟動上傳活動。 啟動上傳活動類以將圖像從圖庫上傳到服務器的功能是這個

    private void launchUploadActivity2(boolean isImage){

    filePath=imagepath;
    if (filePath != null) {
        // Displaying the image or video on the screen
        //previewMedia(isImage);
        new UploadImageToServer1().execute();
    } else {
        Toast.makeText(getApplicationContext(),
                "Sorry, file path is missing!", Toast.LENGTH_LONG).show();
    }
}

上傳活動類的功能,用於通過捕獲到服務器上傳圖像

    private void launchUploadActivity(boolean isImage){

    filePath=selectedImageUri.getPath();
    if (filePath != null) {
        // Displaying the image or video on the screen
        //previewMedia(isImage);
        new UploadImageToServer().execute();
    } else {
        Toast.makeText(getApplicationContext(),
                "Sorry, file path is missing!", Toast.LENGTH_LONG).show();
    }
}

上傳活動類

private class UploadImageToServer extends AsyncTask<Void, Integer, String> {
    @Override
    protected void onPreExecute() {
        // setting progress bar to zero
        //  progressBar.setProgress(0);
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(Void... params) {
        return uploadFile();
    }

    @SuppressWarnings("deprecation")
    private String uploadFile() {
        String responseString = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(AppConfig.URL_PHOTO);

        try {
            AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
                    new AndroidMultiPartEntity.ProgressListener() {


                        @Override
                        public void transferred(long num) {
                            publishProgress((int) ((num / (float) totalSize) * 100));
                        }
                    });


            File sourceFile = new File(filePath);
            ;
            // Adding file data to http body
            entity.addPart("image", new FileBody(sourceFile));

            // Extra parameters if you want to pass to server
            entity.addPart("userid",
                    new StringBody(session.getuid()));


            totalSize = entity.getContentLength();
            httppost.setEntity(entity);

            // Making server call

            HttpResponse response = httpclient.execute(httppost);

            HttpEntity r_entity = response.getEntity();

            int statusCode = response.getStatusLine().getStatusCode();

            if (statusCode == 200) {
                // Server response

                responseString = EntityUtils.toString(r_entity);

            } else {
                responseString = "Error occurred! Http Status Code: "
                        + statusCode;
            }

        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }

        return responseString;

    }

    @Override
    protected void onPostExecute(String result) {
        Log.e(TAG, "Response from server: " + result);

        // showing the server response in an alert dialog


        super.onPostExecute(result);

    }




}

這是在捕獲圖像時創建特定文件夾路徑的功能

/**
 * Creating file uri to store image/video
 */
public Uri getOutputMediaFileUri(int type) {
    return Uri.fromFile(getOutputMediaFile(type));
}

/**
 * returning image / video
 */
private static File getOutputMediaFile(int type) {

    // External sdcard location
    File mediaStorageDir = new File(
            Environment
                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
            AppConfig.IMAGE_DIRECTORY_NAME);

    // Create the storage directory if it does not exist
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d(TAG, "Oops! Failed create "
                    + AppConfig.IMAGE_DIRECTORY_NAME + " directory");
            return null;
        }
    }

    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
            Locale.getDefault()).format(new Date());
    File mediaFile;
    if (type == MEDIA_TYPE_IMAGE) {
        mediaFile = new File(mediaStorageDir.getPath() + File.separator
                + "IMG_" + timeStamp + ".jpg");
    } else if (type == MEDIA_TYPE_VIDEO) {
        mediaFile = new File(mediaStorageDir.getPath() + File.separator
                + "VID_" + timeStamp + ".mp4");
    } else {
        return null;
    }

    return mediaFile;
}

現在我可以從畫廊和相機上傳

請檢查清單中的權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望這可以幫助。:)

OkHttpClient 客戶端 = new OkHttpClient();

        RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("SessionId", "")
                .addFormDataPart("UserDeviceGuid", "")
                .addFormDataPart("UserPhoto", "photo.png", RequestBody.create(MEDIA_TYPE_PNG, new File(path)))
                .build();

        serverURL = serverURL + "/FileUpload/UserPhotoUpload";
        Request request = new Request.Builder().url(serverURL).post(requestBody).build();
        try {
            Response response = client.newCall(request).execute();
            String strResponse = response.body().string();
            Log.d("upload image", "Response" + strResponse);
            if (!response.isSuccessful()) {
            } else {
                JSONObject jsonResponse = null;
                try {
                    jsonResponse = new JSONObject(strResponse);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                if (jsonResponse != null && jsonResponse.has("Success") && jsonResponse.getBoolean("Success")) {
                    isSuccess = true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();

        } catch (Exception e) {
            e.printStackTrace();
        }
  1. 獲取改造對象 if (retrofit == null) { retrofit = new retrofit2.Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); } 返回改造;

  2. 接口@GET("/photos") 調用<List> getAllPhotos();

  3. 獲取 galary 圖像路徑私有上下文上下文;

    /* 獲取uri相關內容真實本地文件路徑。 */ public String getUriRealPath(Context ctx, Uri uri, int type) { this.context = ctx;

     String ret = ""; if (isAboveKitKat()) { // Android OS above sdk version 19. ret = getUriRealPathAboveKitkat(ctx, uri, type); } else { // Android OS below sdk version 19 ret = getImageRealPath(context.getContentResolver(), uri, null); } return ret;

    }

    public Uri getImageUri(Context context, Bitmap bitmap) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); String path = MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, "img", null); 返回 Uri.parse(path); } catch (IllegalArgumentException e) { } catch (Exception e) { } return null; }

    @TargetApi(Build.VERSION_CODES.KITKAT) private String getUriRealPathAboveKitkat(Context ctx, Uri uri, int type) { String ret = "";

     if (ctx != null && uri != null) { if (type == 1) { if (isFileUri(uri)) { ret = uri.getPath(); } else if (isDocumentUri(ctx, uri)) { ret = getPath(uri); } else if (isGooglePhotoDoc(uri.getAuthority())) { ret = uri.getLastPathSegment(); } else if (uri.toString().startsWith("content://com.google.android.apps.photos.contentprovider")){ try { InputStream inputStream = context.getContentResolver().openInputStream(uri); // context needed File photoFile = createTemporalFileFrom(inputStream); ret = photoFile.getPath(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } else if (isContentUri(uri)) { if (isGooglePhotoDoc(uri.getAuthority())) { ret = uri.getLastPathSegment(); } else if (uri.toString().startsWith("content://com.google.android.apps.photos.contentprovider")){ try { InputStream inputStream = context.getContentResolver().openInputStream(uri); // context needed File photoFile = createTemporalFileFrom(inputStream); ret = photoFile.getPath(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else if (uri.toString().startsWith("content://com.google.android.apps.photos.content")){ try { InputStream is = context.getContentResolver().openInputStream(uri); if (is != null) { Bitmap pictureBitmap = BitmapFactory.decodeStream(is); ret = getImageUri(context, pictureBitmap).toString(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { ret = getImageRealPath(context.getContentResolver(), uri, null); } } else if (isFileUri(uri)) { ret = uri.getPath(); } else if (isDocumentUri(ctx, uri)) { ret = getPath(uri); } } return ret;

    }

    私有文件 createTemporalFileFrom(InputStream inputStream) 拋出 IOException { File targetFile = null;

     if (inputStream != null) { int read; byte[] buffer = new byte[8 * 1024]; targetFile = createTemporalFile(); OutputStream outputStream = new FileOutputStream(targetFile); while ((read = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, read); } outputStream.flush(); try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return targetFile;

    }

    私有文件 createTemporalFile() { return new File(context.getExternalCacheDir(), "tempFile.jpg"); // 需要上下文 }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT) private String getPath(Uri uri) { String ret = "";

     // Get uri related document id. String documentId = DocumentsContract.getDocumentId(uri); // Get uri authority. String uriAuthority = uri.getAuthority(); if (isMediaDoc(uriAuthority)) { String idArr[] = documentId.split(":"); if (idArr.length == 2) { // First item is document type. String docType = idArr[0]; // Second item is document real id. String realDocId = idArr[1]; // Get content uri by document type. Uri mediaContentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; if ("image".equals(docType)) { mediaContentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else if ("video".equals(docType)) { mediaContentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else if ("audio".equals(docType)) { mediaContentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } // Get where clause with real document id. String whereClause = MediaStore.Images.Media._ID + " = " + realDocId; ret = getImageRealPath(context.getContentResolver(), mediaContentUri, whereClause); } } else if (isDownloadDoc(uriAuthority)) { // Build download uri. Uri downloadUri = Uri.parse("content://downloads/public_downloads"); // Append download document id at uri end. Uri downloadUriAppendId = ContentUris.withAppendedId(downloadUri, Long.valueOf(documentId)); ret = getImageRealPath(context.getContentResolver(), downloadUriAppendId, null); } else if (isExternalStoreDoc(uriAuthority)) { String idArr[] = documentId.split(":"); if (idArr.length == 2) { String type = idArr[0]; String realDocId = idArr[1]; if ("primary".equalsIgnoreCase(type)) { ret = Environment.getExternalStorageDirectory() + "/" + realDocId; } } } return ret;

    }

    /* 檢查當前 android os 版本是否大於 kitkat。 */ private boolean isAboveKitKat() { boolean ret = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 返回 ret; }

    /* 檢查這個 uri 是否代表一個文檔。 */ @TargetApi(Build.VERSION_CODES.KITKAT) private boolean isDocumentUri(Context ctx, Uri uri) { boolean ret = false; if (ctx != null && uri != null) { ret = DocumentsContract.isDocumentUri(ctx, uri); 返回 ret; }

    /* 檢查這個 uri 是否是內容 uri。

    • 內容 uri 喜歡 content://media/external/images/media/1302716
    • */ public boolean isContentUri(Uri uri) { boolean ret = false; if (uri != null) { String uriSchema = uri.getScheme(); if ("content".equalsIgnoreCase(uriSchema)) { ret = true; 返回 ret; }

    /* 檢查這個 uri 是否是一個文件 uri。

    • 文件 uri 像 file:///storage/41B7-12F1/DCIM/Camera/IMG_20180211_095139.jpg
    • */ public boolean isFileUri(Uri uri) { boolean ret = false; if (uri != null) { String uriSchema = uri.getScheme(); if ("file".equalsIgnoreCase(uriSchema)) { ret = true; 返回 ret; }

    /* 檢查此文檔是否由 ExternalStorageProvider 提供。 */ private boolean isExternalStoreDoc(String uriAuthority) { boolean ret = false;

     if ("com.android.externalstorage.documents".equals(uriAuthority)) { ret = true; } return ret;

    }

    /* 檢查此文檔是否由 DownloadsProvider 提供。 */ private boolean isDownloadDoc(String uriAuthority) { boolean ret = false;

     if ("com.android.providers.downloads.documents".equals(uriAuthority)) { ret = true; } return ret;

    }

    /* 檢查此文檔是否由 MediaProvider 提供。 */ private boolean isMediaDoc(String uriAuthority) { boolean ret = false;

     if ("com.android.providers.media.documents".equals(uriAuthority)) { ret = true; } return ret;

    }

    /* 檢查此文檔是否由 google 照片提供。 */ private boolean isGooglePhotoDoc(String uriAuthority) { boolean ret = false;

     if ("com.google.android.apps.photos.content".equals(uriAuthority)) { ret = true; } return ret;

    }

    /* 返回 uri 表示的文檔文件真實本地路徑。*/ public String getImageRealPath(ContentResolver contentResolver, Uri uri, String whereClause) { String ret = "";

     // Query the uri with condition. Cursor cursor = contentResolver.query(uri, null, whereClause, null, null); if (cursor != null) { boolean moveToFirst = cursor.moveToFirst(); if (moveToFirst) { // Get columns name by uri type. String columnName = MediaStore.Images.Media.DATA; if (uri == MediaStore.Images.Media.EXTERNAL_CONTENT_URI) { columnName = MediaStore.Images.Media.DATA; } else if (uri == MediaStore.Audio.Media.EXTERNAL_CONTENT_URI) { columnName = MediaStore.Audio.Media.DATA; } else if (uri == MediaStore.Video.Media.EXTERNAL_CONTENT_URI) { columnName = MediaStore.Video.Media.DATA; } // Get column index. int imageColumnIndex = cursor.getColumnIndex(columnName); // Get column value which is the uri related file local path. ret = cursor.getString(imageColumnIndex); } } if (cursor != null){ cursor.close(); } return ret;

    }

下面的代碼從圖庫中獲取圖像並在圖像視圖中顯示

@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1111: if (resultCode == Activity.RESULT_OK) { if (data != null) { Uri selectedImage = data.getData(); if (selectedImage == null) { Bitmap bitmap = (Bitmap) data.getExtras().get("data");

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

                        String name = "" + System.currentTimeMillis();
                        String path = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, name, null);
                        selectedImage = Uri.parse(path);
                    }
                    if (selectedImage != null) {
                        adapter.dataList.get(index).setUri(selectedImage);
                        adapter.notifyDataSetChanged();
                        gotoUploadImage(selectedImage);
                    }
                }
            }
            break;
    }
}

下面的代碼是從網絡服務器獲取列表

GetDataService 服務 = RetrofitClientInstance.getRetrofitInstance().create(GetDataService.class);

    Call<List<RetroPhoto>> call = service.getAllPhotos();
    call.enqueue(new Callback<List<RetroPhoto>>() {

        @Override
        public void onResponse(Call<List<RetroPhoto>> call, Response<List<RetroPhoto>> response) {
            progressDoalog.dismiss();
            generateDataList(response.body());
        }

        @Override
        public void onFailure(Call<List<RetroPhoto>> call, Throwable t) {
            progressDoalog.dismiss();
            Toast.makeText(HomeScreenActivity.this, "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM