Здесь я пытаюсь прикрепить файлы в моем приложении с устройства android. Я могу прикрепить локальные файлы, такие как файлы моей камеры и файлы моей внешней карты. но не удается вложить файлы из файлов папки Whatapp и загрузить файлы папок.
if(item?.itemId == com.cipherloc.securemailapp.R.id.compose_attachment_button){
setupPermissions()
}
private fun setupPermissions() {
val permission = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
val permission1 = ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
if (permission != PackageManager.PERMISSION_GRANTED || permission1 != PackageManager.PERMISSION_GRANTED ) {
makeRequest()
Log.i("", "Permission to record denied")
}
else{
filePicker()
}
}
My Filepicker Method:
fun filePicker(){
var mimetypes = arrayOf(
"application/*",
"audio/*",
"font/*",
"image/*",
"message/*",
"model/*",
"multipart/*",
"text/*",
"video/*"
)
var chooseFile = Intent(Intent.ACTION_GET_CONTENT)
chooseFile.addCategory(Intent.CATEGORY_OPENABLE);
chooseFile.putExtra("android.content.extra.SHOW_ADVANCED", true);
chooseFile.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
chooseFile.type = "*/*"
chooseFile.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
chooseFile = Intent.createChooser(chooseFile, "Choose a file")
startActivityForResult(chooseFile, 0)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>,
grantResults: IntArray) {
val permission = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
val permission1 = ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
if (permission != PackageManager.PERMISSION_GRANTED || permission1 != PackageManager.PERMISSION_GRANTED ) {
Log.i("", "Permission to record denied")
}
else{
filePicker()
}
}
MakeRequest Method:
private fun makeRequest() {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE),
RECORD_REQUEST_CODE)
}
While Attaching the files from WhatsApp folder files and download folder file am getting error in the below code only.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if(data != null) {
val uri: Uri? = data!!.data
val src: String? = uri!!.getPath()
val sourceVal = File(src)
fileUri = Uri.fromFile(sourceVal)
val juri: java.net.URI =
java.net.URI(RealPathUtil.getRealPath(this, uri))
source = File(juri.getPath());
filesArr.add(source!!)
attachmentRecycler?.adapter = attachmentAdapter
attachmentAdapter!!.notifyDataSetChanged()
System.out.println("dyhtgfgdas " + source + " " + source!!.length())
}
}
Ниже приведен код моей ошибки при попытке прикрепить файлы:
E / AndroidRuntime : FATAL EXCEPTION: main Процесс: com.cipherlo c .securemailapp, PID: 11885 java .lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, запрос = 0, результат = -1, data = Intent {dat = content: // media / external / video / media / 211985 flg = 0x1}} для действия {com.cipherlo c .securemailapp / com.cipherlo c .securemailapp.ComposeMailFragment}: java. net .URISyntaxException: недопустимый символ в пути в индексе 43: / storage / emulated / 0 / WhatsApp / Media / WhatsApp Video / VID-20200122-WA0002.mp4 в android .app.ActivityThread.deliverResults (ActivityThread. java: 4741 ) в android .app.ActivityThread.handleSendResult (ActivityThread. java: 4783) в android .app.servertransaction.ActivityResultItem.execute (ActivityResultItem. java: 49) в android .app.servertransaction. TransactionExecutor.executeCallback s (TransactionExecutor. java: 113) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 71) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 2044) при android .os.Handler.dispatchMessage (Обработчик. java: 106) при android .os.Looper.l oop (Looper. java: 226) при android .app. ActivityThread.main (ActivityThread. java: 7212) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java) : 576) at com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 956) Причина: java. net .URISyntaxException: недопустимый символ в пути в индексе 43: / storage / эмулируется / 0 / WhatsApp / Media / WhatsApp Video / VID-20200122-WA0002.mp4 в java. net .URI $ Parser.fail (URI. java: 2892) в java. net. URI $ Parser.checkChars (URI. java: 3065) в java. net .URI $ Parser.parseHierarchical (URI. java: 3149) в java. net .URI $ Parser. анализ (URI. java: 3107) в java. net .URI. (URI. java: 583) в com.cipherlo * 1 057 * .securemailapp.ComposeMailFragment.onActivityResult (ComposeMailFragment.kt: 1002) в android .app.Activity.dispatchActivityResult (Activity. java: 7743) в android .app.ActivityThread.deliverResults (ActivityThread. java : 4734) в android .app.ActivityThread.handleSendResult (ActivityThread. java: 4783) в android .app.servertransaction.ActivityResultItem.execute (ActivityResultItem. java: 49) в android .app. servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 113) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 71) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 2044) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 226) в android .app.ActivityThread.main (ActivityThread. java: 7212) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit . java: 576) по тел. android .internal.os.ZygoteInit.main (Z ygoteInit. java: 956) I / Process: отправка сигнала. PID: 11885 SIG: 9 Процесс 11885. завершен.