nurzain-pradana

Untitled

Mar 12th, 2020
1,067
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.33 KB | None | 0 0
  1. package com.nurzainpradana.belajarretrofituploadgambartip;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.annotation.Nullable;
  5. import androidx.appcompat.app.AppCompatActivity;
  6. import androidx.core.app.ActivityCompat;
  7.  
  8. import android.Manifest;
  9. import android.app.ProgressDialog;
  10. import android.content.Intent;
  11. import android.content.pm.PackageManager;
  12. import android.database.Cursor;
  13. import android.graphics.BitmapFactory;
  14. import android.net.Uri;
  15. import android.os.Bundle;
  16. import android.provider.MediaStore;
  17. import android.util.Log;
  18. import android.view.View;
  19. import android.widget.Button;
  20. import android.widget.ImageView;
  21. import android.widget.Toast;
  22.  
  23. import com.nurzainpradana.belajarretrofituploadgambartip.Api.ApiClient;
  24. import com.nurzainpradana.belajarretrofituploadgambartip.Api.ApiService;
  25. import com.nurzainpradana.belajarretrofituploadgambartip.Model.Image;
  26. import com.nurzainpradana.belajarretrofituploadgambartip.Model.ServerResponse;
  27. import com.theartofdev.edmodo.cropper.CropImage;
  28. import com.theartofdev.edmodo.cropper.CropImageView;
  29.  
  30. import java.io.File;
  31. import java.nio.channels.FileChannel;
  32.  
  33. import okhttp3.MediaType;
  34. import okhttp3.MultipartBody;
  35. import okhttp3.RequestBody;
  36. import retrofit2.Call;
  37. import retrofit2.Callback;
  38. import retrofit2.Response;
  39.  
  40. public class MainActivity extends AppCompatActivity {
  41. Button btnUpload, btnPickImage;
  42. String mediaPath;
  43. ImageView imgView;
  44. String[] mediaColumns = {MediaStore.Video.Media._ID};
  45. ProgressDialog progressDialog;
  46.  
  47. Image image = new Image();
  48.  
  49. final int REQUEST_CODE_GALLERY = 999;
  50.  
  51. @Override
  52. protected void onCreate(Bundle savedInstanceState) {
  53. super.onCreate(savedInstanceState);
  54. setContentView(R.layout.activity_main);
  55.  
  56. progressDialog = new ProgressDialog(this);
  57. progressDialog.setMessage("Uploading ...");
  58.  
  59. btnPickImage = findViewById(R.id.pick_img);
  60. btnUpload = findViewById(R.id.upload);
  61. imgView = findViewById(R.id.preview);
  62.  
  63. btnUpload.setOnClickListener(new View.OnClickListener() {
  64. @Override
  65. public void onClick(View v) {
  66. uploadFile();
  67.  
  68. }
  69. });
  70.  
  71. btnPickImage.setOnClickListener(new View.OnClickListener() {
  72. @Override
  73. public void onClick(View v) {
  74. ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE_GALLERY);
  75.  
  76. }
  77. });
  78.  
  79.  
  80. }
  81.  
  82. @Override
  83. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  84. super.onActivityResult(requestCode, resultCode, data);
  85.  
  86. try {
  87. if (requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK) {
  88. Uri imageUri = data.getData();
  89.  
  90. String[] filePathColumn = {MediaStore.Images.Media.DATA};
  91.  
  92. Cursor cursor = getContentResolver().query(imageUri, filePathColumn, null, null, null);
  93. assert cursor != null;
  94. cursor.moveToFirst();
  95.  
  96. int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
  97.  
  98.  
  99. image.setMediapath(cursor.getString(columnIndex));
  100. // Set the Image in ImageView for Previewing the Media
  101. imgView.setImageBitmap(BitmapFactory.decodeFile(image.getMediapath()));
  102. } else {
  103. Toast.makeText(this, "You haven't picked Image/Video", Toast.LENGTH_LONG).show();
  104. }
  105. } catch (Exception e) {
  106. Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG).show();
  107. }
  108. }
  109.  
  110. @Override
  111. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  112. if(requestCode == REQUEST_CODE_GALLERY){
  113. if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
  114. Intent galleryIntent = new Intent(Intent.ACTION_PICK,
  115. android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  116. startActivityForResult(galleryIntent, 999);
  117. } else {
  118. Toast.makeText(this, "Don't have permission to access file location", Toast.LENGTH_SHORT).show();
  119. }
  120. return;
  121. }
  122. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  123. }
  124.  
  125. //Uploading Image/Video
  126. private void uploadFile(){
  127. try {
  128. progressDialog.show();
  129.  
  130. // Map is used to multipart the file using okhttp3.RequestBody
  131. File file = new File(image.getMediapath());
  132.  
  133. //Parsing any Media type file
  134. RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
  135. MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
  136. RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
  137.  
  138. ApiService getResponse = ApiClient.getClient().create(ApiService.class);
  139.  
  140. Call<ServerResponse> call = getResponse.uploadFile(fileToUpload, filename);
  141. call.enqueue(new Callback<ServerResponse>() {
  142. @Override
  143. public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
  144. ServerResponse serverResponse = response.body();
  145. if (serverResponse != null) {
  146. if (serverResponse.getSuccess()) {
  147. Toast.makeText(getApplicationContext(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
  148. } else {
  149. Toast.makeText(getApplicationContext(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
  150. }
  151. } else {
  152. assert serverResponse != null;
  153. Log.v("Response", serverResponse.toString());
  154. }
  155. progressDialog.dismiss();
  156. }
  157.  
  158. @Override
  159. public void onFailure(Call<ServerResponse> call, Throwable t) {
  160.  
  161. }
  162. });
  163. }catch (Exception e) {
  164. e.printStackTrace();
  165. }
  166. }
  167. }
Advertisement
Add Comment
Please, Sign In to add comment