我一直在尝试解决一个问题与共享映像从外部存储目录。它在大多数设备中起作用,但在其他设备中不起作用。我有:1。添加了扩展FileProvider的类:
public class GenericFileProvider extends FileProvider {}
<provider
android:name=".Utils.GenericFileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="MissingDefaultResource">
<external-path name="external_files" path="."/>
</paths>
我的共享映像功能在下面:
private fun shareInEmail() {
val filename = "Avoir+$timeStamp.jpg"
val filelocation = File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename)
val path : Uri = FileProvider.getUriForFile(
requireContext(),
context!!.applicationContext.packageName.toString() + ".provider",
filelocation
)
context!!.grantUriPermission(
"com.ideasfactory.mjcprojet",
path,
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
val emailIntent = Intent(Intent.ACTION_SEND)
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
// set the type to 'email'
emailIntent.type = "vnd.android.cursor.dir/email"
emailIntent.setType("text/plain")
emailIntent.type = "application/jpg"
val to = arrayOf("contact@mjclambres.fr")
emailIntent.putExtra(Intent.EXTRA_EMAIL, to)
emailIntent.putExtra(Intent.EXTRA_BCC, arrayOf<String>())
// the attachment
emailIntent.putExtra(Intent.EXTRA_STREAM, path)
// the mail subject
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Transaction")
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(Intent.createChooser(emailIntent, "Transaction"))
}
E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading com.ideasfactory.mjcprojet.Utils.GenericFileProvider uri content://com.ideasfactory.mjcprojet.provider/external_files/Avoir%2B2020-06-11%2011%3A08.jpg from pid=12602, uid=1000 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:729)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:602)
at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:593)
at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:507)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:307)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)
我将感谢你的帮助
嘿,我也遇到过同样的问题,经过大量研究,我发现问题出在provider_paths.xml.,我得到了许多不同可能性的不同路径。使用以下代码更改provider_paths.xml:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="cache" path="." />
<external-path name="external" path="." />
<root-path name="root" path="." />
<files-path name="my_images" path="/" />
<files-path name="my_images" path="myfile/"/>
<files-path name="files" path="." />
<external-path name="external_files" path="." />
<external-path name="images" path="Pictures" />
<external-path name="my_images" path="." />
<external-files-path name="images" path="Pictures"/>
<external-files-path name="camera_image" path="Pictures/"/>
<external-files-path name="external_files" path="." />
<external-files-path name="my_images" path="my_images" />
<external-cache-path name="external_cache" path="." />
</paths>
过程或函数“login”需要参数“@Abc”,但未提供该参数 4个小时的搜索和尝试,没有用我已经提供了这个参数(复制/粘贴),给程序的参数数量是相同的程序和顺序。 @Abc是一个输出参数。 存储过程定义: 调用存储过程的代码:
问题内容: 我正在尝试通过调用存储过程将数据插入SQL Server数据库中,但出现错误 过程或函数“插入”期望参数“ @Emp_no”,但未提供 我的存储过程称为。我已经对其进行了彻底检查,并且没有丢失任何参数,也已经通过使用标签对其进行了检查。标签显示该值,但我不知道为什么会收到错误消息。 我的代码是 并且存储过程是 请帮我。提前致谢。 问题答案: 您需要使用: 或其他数据类型: 替换使用字符
我试图捕捉图像使用相机意图并将其发送到服务器。 我遵循了官方https://developer.android.com/training/camera/photobasics 但是在使用FileProvider从filepath获取Uri时出现异常。 我有个例外 无法找到包含 /storage/emulated/0/Android/data/com.example.app/files/Pictur
我对C#相当陌生,我正在尝试设置对数据库中一个存储过程的调用,该过程只接受一个参数。 我得到错误“过程或函数'SP_getName'需要参数'@username',但未提供该参数。” 当我向存储过程提供参数并通过SQL management studio运行它时,它工作正常。 然而,当我尝试调用它时,错误在于我如何传递参数,但我无法发现问题是什么。 如果您能帮我发现错误,我们将不胜感激! 我也试过
我最近更改了DNS提供商,我正在尝试将DNS记录添加到我的新提供商。但是,我不确定应该添加多少记录。 我的旧名称服务器有一大堆自动创建的记录,如“ftp.example.com”、“cpanel.example.com”、“carddavs.\u tcp.example.com”、“webdisk.example.com”、“autodiscover.example.com”等。 所以我的问题是,