Advertisement
Dwitio

TambahDataActivity.kt

Mar 19th, 2020
1,002
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 6.34 KB | None | 0 0
  1. package tgs.app.pengaduan
  2.  
  3. import android.Manifest
  4. import android.app.Activity
  5. import android.content.Intent
  6. import android.content.pm.PackageManager
  7. import android.graphics.Bitmap
  8. import android.graphics.BitmapFactory
  9. import android.net.Uri
  10. import android.os.Bundle
  11. import android.os.Environment
  12. import android.provider.MediaStore
  13. import android.util.Base64
  14. import android.util.Log
  15. import android.view.View
  16. import android.widget.Toast
  17. import androidx.appcompat.app.AlertDialog
  18. import androidx.appcompat.app.AppCompatActivity
  19. import androidx.core.app.ActivityCompat
  20. import androidx.core.content.ContextCompat
  21. import com.androidnetworking.AndroidNetworking
  22. import com.androidnetworking.common.Priority
  23. import com.androidnetworking.error.ANError
  24. import com.androidnetworking.interfaces.JSONObjectRequestListener
  25. import kotlinx.android.synthetic.main.activity_tambah_data.*
  26. import org.json.JSONObject
  27. import java.io.ByteArrayOutputStream
  28. import java.io.File
  29. import java.io.IOException
  30.  
  31.  
  32. class TambahDataActivity : AppCompatActivity() {
  33.  
  34.     private val GALLERY_REQUEST_CODE = 101
  35.     companion object {
  36.         var nikk: String = "NIKK"
  37.     }
  38.  
  39.     private var encoded_string: String? = null
  40.     private var image_name: String? = null
  41.     private var file: File? = null
  42.     private var file_uri: Uri? = null
  43.     private var bitmap: Bitmap? = null
  44.  
  45.     private val STORAGE_PERMISSION_CODE = 1
  46.  
  47.     override fun onCreate(savedInstanceState: Bundle?) {
  48.         super.onCreate(savedInstanceState)
  49.         setContentView(R.layout.activity_tambah_data)
  50.         val niks = intent.extras?.get(nikk).toString()
  51.         btn_tambah_foto.setOnClickListener {
  52.             if (ContextCompat.checkSelfPermission(applicationContext,
  53.                 Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
  54.                 val intent = Intent(Intent.ACTION_PICK)
  55.                 intent.type = "image/*"
  56.                 val mimeTypes =
  57.                     arrayOf("image/jpeg", "image/png")
  58.                 intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)
  59.                 intent.putExtra(MediaStore.EXTRA_OUTPUT, file_uri)
  60.                 startActivityForResult(intent, GALLERY_REQUEST_CODE)
  61.             } else {
  62.                 requestStoragePermission()
  63.             }
  64.         }
  65.  
  66.         btn_kirim.setOnClickListener {
  67.             val judul: String = edit_judul.text.toString()
  68.             val deskripsi: String = edit_deskripsi.text.toString()
  69.  
  70.             AndroidNetworking.post(Config.url + "create_pengaduan.php")
  71.                 .addBodyParameter("nik", niks)
  72.                 .addBodyParameter("judul", judul)
  73.                 .addBodyParameter("isi_laporan", deskripsi)
  74.                 .addBodyParameter("foto", encoded_string)
  75.                 .addBodyParameter("status", "belum ditanggapi")
  76.                 .setPriority(Priority.MEDIUM)
  77.                 .build()
  78.                 .getAsJSONObject(object : JSONObjectRequestListener {
  79.                     override fun onResponse(response: JSONObject) {
  80.                         if (response.get("response") == "success"){
  81.                             Toast.makeText(applicationContext, "Sukses", Toast.LENGTH_SHORT).show()
  82.                             finish()
  83.                         } else {
  84.                             Toast.makeText(applicationContext, "Gagal", Toast.LENGTH_SHORT).show()
  85.                         }
  86.                     }
  87.  
  88.                     override fun onError(error: ANError) {
  89.                         Toast.makeText(applicationContext, error.errorBody, Toast.LENGTH_SHORT).show()
  90.                         Toast.makeText(applicationContext, error.errorCode, Toast.LENGTH_SHORT).show()
  91.                         Toast.makeText(applicationContext, error.errorDetail, Toast.LENGTH_SHORT).show()
  92.                         Log.e("error1", error.errorDetail)
  93.                         Log.e("error2", error.errorBody)
  94.                         Log.e("error3", error.errorCode.toString())
  95.                     }
  96.                 })
  97.         }
  98.     }
  99.  
  100.     private fun requestStoragePermission() {
  101.         if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
  102.             AlertDialog.Builder(this)
  103.                 .setTitle("Permission needed")
  104.                 .setMessage("The permission is needed because of it and that")
  105.                 .setPositiveButton("OK"){dialog, which ->
  106.                     ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), STORAGE_PERMISSION_CODE)
  107.                 }
  108.                 .setNegativeButton("CANCEL"){dialog, which ->
  109.                     dialog.dismiss()
  110.                 }
  111.                 .create().show()
  112.         } else {
  113.             ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), STORAGE_PERMISSION_CODE)
  114.         }
  115.     }
  116.  
  117.     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  118.         super.onActivityResult(requestCode, resultCode, data)
  119.         if (resultCode == Activity.RESULT_OK) when (requestCode) {
  120.             GALLERY_REQUEST_CODE -> {
  121.                 //data.getData returns the content URI for the selected Image
  122.                 file_uri = data?.data!!
  123.                 val fileee: String = data.data?.lastPathSegment!!
  124.                 val filename: String = fileee.substring(fileee.lastIndexOf("/") + 1)
  125.                 img_adu.setImageURI(file_uri)
  126.                 img_adu.visibility = View.VISIBLE
  127.  
  128.                 file = File(
  129.                     Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
  130.                         .toString() + File.separator + filename
  131.                 )
  132.                 file_uri = Uri.fromFile(file)
  133.                 bitmap = BitmapFactory.decodeFile(file_uri!!.path)
  134.  
  135.                 try {
  136.                     bitmap = MediaStore.Images.Media.getBitmap(contentResolver, file_uri)
  137.                     val stream = ByteArrayOutputStream()
  138.                     bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, stream)
  139.                     bitmap?.recycle()
  140.                     val array = stream.toByteArray()
  141.                     encoded_string = Base64.encodeToString(array, 0)
  142.                 } catch (e: IOException) {
  143.                     e.printStackTrace()
  144.                 }
  145.             }
  146.         }
  147.     }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement