Commit 805f30fe authored by Divyanshu Bhargava's avatar Divyanshu Bhargava

added all permission in AndroidPermissionHelper class

parent 490f0ed3
...@@ -12,6 +12,7 @@ import android.os.Bundle ...@@ -12,6 +12,7 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.provider.MediaStore import android.provider.MediaStore
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.util.Log
import android.view.KeyEvent import android.view.KeyEvent
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.Menu import android.view.Menu
...@@ -66,6 +67,11 @@ import chat.rocket.android.helper.ImageHelper ...@@ -66,6 +67,11 @@ import chat.rocket.android.helper.ImageHelper
import chat.rocket.android.helper.KeyboardHelper import chat.rocket.android.helper.KeyboardHelper
import chat.rocket.android.helper.MessageParser import chat.rocket.android.helper.MessageParser
import chat.rocket.android.helper.AndroidPermissionsHelper import chat.rocket.android.helper.AndroidPermissionsHelper
import chat.rocket.android.helper.AndroidPermissionsHelper.getCameraPermission
import chat.rocket.android.helper.AndroidPermissionsHelper.getWriteExternalStoragePermission
import chat.rocket.android.helper.AndroidPermissionsHelper.hasCameraPermission
import chat.rocket.android.helper.AndroidPermissionsHelper.hasWriteExternalStoragePermission
import chat.rocket.android.util.TimberLogger
import chat.rocket.android.util.extension.asObservable import chat.rocket.android.util.extension.asObservable
import chat.rocket.android.util.extension.createImageFile import chat.rocket.android.util.extension.createImageFile
import chat.rocket.android.util.extensions.circularRevealOrUnreveal import chat.rocket.android.util.extensions.circularRevealOrUnreveal
...@@ -912,7 +918,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR ...@@ -912,7 +918,7 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
if(hasCameraPermission(it)) { if(hasCameraPermission(it)) {
dispatchTakePictureIntent() dispatchTakePictureIntent()
} else { } else {
getCameraPermission() getCameraPermission(it)
} }
} }
handler.postDelayed({ handler.postDelayed({
...@@ -932,8 +938,8 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR ...@@ -932,8 +938,8 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
button_drawing.setOnClickListener { button_drawing.setOnClickListener {
activity?.let { fragmentActivity -> activity?.let { fragmentActivity ->
if (!ImageHelper.canWriteToExternalStorage(fragmentActivity)) { if (!hasWriteExternalStoragePermission(fragmentActivity)) {
ImageHelper.checkWritingPermission(fragmentActivity) getWriteExternalStoragePermission(fragmentActivity)
} else { } else {
val intent = Intent(fragmentActivity, DrawingActivity::class.java) val intent = Intent(fragmentActivity, DrawingActivity::class.java)
startActivityForResult(intent, REQUEST_CODE_FOR_DRAW) startActivityForResult(intent, REQUEST_CODE_FOR_DRAW)
...@@ -967,19 +973,9 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR ...@@ -967,19 +973,9 @@ class ChatRoomFragment : Fragment(), ChatRoomView, EmojiKeyboardListener, EmojiR
} }
} }
private fun hasCameraPermission(context: Context): Boolean {
return AndroidPermissionsHelper.checkPermission(context, android.Manifest.permission.CAMERA)
}
private fun getCameraPermission() {
requestPermissions(
arrayOf(android.Manifest.permission.CAMERA),
AndroidPermissionsHelper.CAMERA_CODE
)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults) super.onRequestPermissionsResult(requestCode, permissions, grantResults)
Log.e("TAG_permission", requestCode.toString())
when(requestCode) { when(requestCode) {
AndroidPermissionsHelper.CAMERA_CODE -> { AndroidPermissionsHelper.CAMERA_CODE -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) { if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
......
package chat.rocket.android.helper package chat.rocket.android.helper
import android.Manifest
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.view.ContextThemeWrapper
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
...@@ -11,14 +13,44 @@ object AndroidPermissionsHelper { ...@@ -11,14 +13,44 @@ object AndroidPermissionsHelper {
const val WRITE_EXTERNAL_STORAGE_CODE = 1 const val WRITE_EXTERNAL_STORAGE_CODE = 1
const val CAMERA_CODE = 2 const val CAMERA_CODE = 2
fun checkPermission(context: Context, permission: String): Boolean { private fun checkPermission(context: Context, permission: String): Boolean {
return ContextCompat.checkSelfPermission( return ContextCompat.checkSelfPermission(
context, context,
permission permission
) == PackageManager.PERMISSION_GRANTED ) == PackageManager.PERMISSION_GRANTED
} }
fun requestPermission(context: Activity, permission: String, requestCode: Int) { private fun requestPermission(context: Activity, permission: String, requestCode: Int) {
ActivityCompat.requestPermissions(context, arrayOf(permission), requestCode) ActivityCompat.requestPermissions(context, arrayOf(permission), requestCode)
} }
fun hasCameraPermission(context: Context): Boolean {
return AndroidPermissionsHelper.checkPermission(context, Manifest.permission.CAMERA)
}
fun getCameraPermission(context: Context) {
if (context is ContextThemeWrapper) {
val activity = if (context.baseContext is Activity) context.baseContext as Activity else context as Activity
AndroidPermissionsHelper.requestPermission(
activity,
Manifest.permission.CAMERA,
AndroidPermissionsHelper.WRITE_EXTERNAL_STORAGE_CODE
)
}
}
fun hasWriteExternalStoragePermission(context: Context): Boolean {
return checkPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
fun getWriteExternalStoragePermission(context: Context) {
if (context is ContextThemeWrapper) {
val activity = if (context.baseContext is Activity) context.baseContext as Activity else context as Activity
AndroidPermissionsHelper.requestPermission(
activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
WRITE_EXTERNAL_STORAGE_CODE
)
}
}
} }
\ No newline at end of file
...@@ -18,6 +18,8 @@ import androidx.appcompat.widget.Toolbar ...@@ -18,6 +18,8 @@ import androidx.appcompat.widget.Toolbar
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.setPadding import androidx.core.view.setPadding
import chat.rocket.android.R import chat.rocket.android.R
import chat.rocket.android.helper.AndroidPermissionsHelper.getWriteExternalStoragePermission
import chat.rocket.android.helper.AndroidPermissionsHelper.hasWriteExternalStoragePermission
import com.facebook.binaryresource.FileBinaryResource import com.facebook.binaryresource.FileBinaryResource
import com.facebook.cache.common.CacheKey import com.facebook.cache.common.CacheKey
import com.facebook.imageformat.ImageFormatChecker import com.facebook.imageformat.ImageFormatChecker
...@@ -117,8 +119,8 @@ object ImageHelper { ...@@ -117,8 +119,8 @@ object ImageHelper {
} }
private fun saveImage(context: Context): Boolean { private fun saveImage(context: Context): Boolean {
if (!canWriteToExternalStorage(context)) { if (!hasWriteExternalStoragePermission(context)) {
checkWritingPermission(context) getWriteExternalStoragePermission(context)
return false return false
} }
if (ImagePipelineFactory.getInstance().mainFileCache.hasKey(cacheKey)) { if (ImagePipelineFactory.getInstance().mainFileCache.hasKey(cacheKey)) {
...@@ -152,22 +154,4 @@ object ImageHelper { ...@@ -152,22 +154,4 @@ object ImageHelper {
} }
return true return true
} }
fun canWriteToExternalStorage(context: Context): Boolean {
return AndroidPermissionsHelper.checkPermission(
context,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
}
fun checkWritingPermission(context: Context) {
if (context is ContextThemeWrapper) {
val activity = if (context.baseContext is Activity) context.baseContext as Activity else context as Activity
AndroidPermissionsHelper.requestPermission(
activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
AndroidPermissionsHelper.WRITE_EXTERNAL_STORAGE_CODE
)
}
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment