сначала — содержимое манифеста:
Код: Выделить всё
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
Код: Выделить всё
Код: Выделить всё
private fun sendLocationHistoryEmail() {
val databasePath = requireContext().getDatabasePath("LocationHistoryDB")
if (!databasePath.exists()) {
Toast.makeText(requireContext(), "No location history database available to send.", Toast.LENGTH_SHORT).show()
return
}
val subject = "Location History Database"
val body = "Please find the location history database attached."
val recipient = "derakhshanpazhuhesh@gmail.com"
val uri = FileProvider.getUriForFile(
requireContext(),
"${requireContext().packageName}.provider",
databasePath
)
val emailIntent = Intent(Intent.ACTION_SEND).apply {
Log.d("FileProviderURI", uri.toString())
type = "application/octet-stream" // Generic MIME type for binary data
putExtra(Intent.EXTRA_EMAIL, arrayOf(recipient))
putExtra(Intent.EXTRA_SUBJECT, subject)
putExtra(Intent.EXTRA_TEXT, body)
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
putExtra(Intent.EXTRA_STREAM, uri)
}
try {
startActivity(Intent.createChooser(emailIntent, "Send Email"))
} catch (e: Exception) {
Toast.makeText(requireContext(), "No email clients installed.", Toast.LENGTH_SHORT).show()
}
}
E Запись исключения в посылку (спросите Gemini )
java.lang.SecurityException: отказ в разрешении: чтение androidx.core.content.FileProvider uri content://com.example.voltage.provider/databases/LocationHistoryDB из pid=11552, uid=1000 требует, чтобы поставщик был экспортирован, или грантUriPermission()
в android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:879)
в android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java) :707)
в android.content.ContentProvider$Transport.query(ContentProvider.java:246)
в android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
в android.os.Binder.execTransactInternal(Binder. java:1280)
в android.os.Binder.execTransact(Binder.java:1244)
E Запись исключения в посылку (спросите Gemini)java.lang.SecurityException: отказ в разрешении: чтение androidx.core.content.FileProvider uri content://com.example.voltage.provider/databases/LocationHistoryDB из pid=11552, uid=1000 требует экспорта поставщика или GrantUriPermission()
в android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:879)
в android.content.ContentProvider$Transport.enforceReadPermission (ContentProvider.java:707)
в android.content.ContentProvider$Transport.query(ContentProvider.java:246)
в android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
в android.os.Binder.execTransactInternal(Binder. java:1280)
в android.os.Binder.execTransact(Binder.java:1244)
E Запись исключения в посылку (спросите Gemini)java.lang.SecurityException: отказ в разрешении: чтение androidx.core.content.FileProvider uri content://com.example.voltage.provider/databases/LocationHistoryDB из pid=11552, uid=1000 требует экспорта поставщика или GrantUriPermission()
в android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:879)
в android.content.ContentProvider$Transport.enforceReadPermission (ContentProvider.java:707)
в android.content.ContentProvider$Transport.query(ContentProvider.java:246)
в android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
в android.os.Binder.execTransactInternal(Binder. java:1280)
в android.os.Binder.execTransact(Binder.java:1244)
Подробнее здесь: https://stackoverflow.com/questions/792 ... app-storag