Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.nurzainpradana.belajarretrofituploadgambartip;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.core.app.ActivityCompat;
- import android.Manifest;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.database.Cursor;
- import android.graphics.BitmapFactory;
- import android.net.Uri;
- import android.os.Bundle;
- import android.provider.MediaStore;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.Toast;
- import com.nurzainpradana.belajarretrofituploadgambartip.Api.ApiClient;
- import com.nurzainpradana.belajarretrofituploadgambartip.Api.ApiService;
- import com.nurzainpradana.belajarretrofituploadgambartip.Model.Image;
- import com.nurzainpradana.belajarretrofituploadgambartip.Model.ServerResponse;
- import com.theartofdev.edmodo.cropper.CropImage;
- import com.theartofdev.edmodo.cropper.CropImageView;
- import java.io.File;
- import java.nio.channels.FileChannel;
- import okhttp3.MediaType;
- import okhttp3.MultipartBody;
- import okhttp3.RequestBody;
- import retrofit2.Call;
- import retrofit2.Callback;
- import retrofit2.Response;
- public class MainActivity extends AppCompatActivity {
- Button btnUpload, btnPickImage;
- String mediaPath;
- ImageView imgView;
- String[] mediaColumns = {MediaStore.Video.Media._ID};
- ProgressDialog progressDialog;
- Image image = new Image();
- final int REQUEST_CODE_GALLERY = 999;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- progressDialog = new ProgressDialog(this);
- progressDialog.setMessage("Uploading ...");
- btnPickImage = findViewById(R.id.pick_img);
- btnUpload = findViewById(R.id.upload);
- imgView = findViewById(R.id.preview);
- btnUpload.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- uploadFile();
- }
- });
- btnPickImage.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_GALLERY);
- }
- });
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- try {
- if (requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK) {
- Uri imageUri = data.getData();
- String[] filePathColumn = {MediaStore.Images.Media.DATA};
- Cursor cursor = getContentResolver().query(imageUri, filePathColumn, null, null, null);
- assert cursor != null;
- cursor.moveToFirst();
- int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
- image.setMediapath(cursor.getString(columnIndex));
- // Set the Image in ImageView for Previewing the Media
- imgView.setImageBitmap(BitmapFactory.decodeFile(image.getMediapath()));
- } else {
- Toast.makeText(this, "You haven't picked Image/Video", Toast.LENGTH_LONG).show();
- }
- } catch (Exception e) {
- Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if(requestCode == REQUEST_CODE_GALLERY){
- if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
- Intent galleryIntent = new Intent(Intent.ACTION_PICK,
- android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- startActivityForResult(galleryIntent, 999);
- } else {
- Toast.makeText(this, "Don't have permission to access file location", Toast.LENGTH_SHORT).show();
- }
- return;
- }
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- }
- //Uploading Image/Video
- private void uploadFile(){
- try {
- progressDialog.show();
- // Map is used to multipart the file using okhttp3.RequestBody
- File file = new File(image.getMediapath());
- //Parsing any Media type file
- RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
- MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
- RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
- ApiService getResponse = ApiClient.getClient().create(ApiService.class);
- Call<ServerResponse> call = getResponse.uploadFile(fileToUpload, filename);
- call.enqueue(new Callback<ServerResponse>() {
- @Override
- public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
- ServerResponse serverResponse = response.body();
- if (serverResponse != null) {
- if (serverResponse.getSuccess()) {
- Toast.makeText(getApplicationContext(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
- } else {
- Toast.makeText(getApplicationContext(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
- }
- } else {
- assert serverResponse != null;
- Log.v("Response", serverResponse.toString());
- }
- progressDialog.dismiss();
- }
- @Override
- public void onFailure(Call<ServerResponse> call, Throwable t) {
- }
- });
- }catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment