Android.OS.FileUriExposedException:通过 ClipData.Item.getUri()' 暴露在应用程序之外这是不同的

问题描述

我有一个更简单的问题。我现在正在尝试通过使用意图发送彩信。我已经使用这些帖子创建了我的函数并设置了我的代码

android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData()

Android android.os.FileUriExposedException Error in Android N

现在,我的问题是,即使我正确设置了所有内容,我仍然收到标题中的错误。有人会看看哪里出了问题吗?

注意: 现在,在关闭这篇文章之前,我已经在这里查看了这个站点exposed beyond app through ClipData.Item.getUri 而且我有他们实施的内容,猜猜是什么,我仍然收到错误消息!所以不要关闭这篇文章,因为我仍然遇到问题,这意味着那篇文章中的答案是不够的。那个是用 Java 而不是 Xamarin!

代码

public void SendMMSMessage()
        {
            
            string filePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures) + "/TestPic.jpg";
            Context CTX = Android.App.Application.Context;

            Intent sendIntent = new Intent(Intent.ActionSend);

            sendIntent.SetClassName("com.android.mms","comm.andrdoid.ui.ComposeMessafeActivity");
            sendIntent.PutExtra("address","1111111");
            sendIntent.PutExtra("sms_body","This is a test");
            Java.IO.File someFile = new Java.IO.File(filePath);

            sendIntent.AddFlags(ActivityFlags.GrantReadUriPermission | ActivityFlags.GrantWriteUriPermission);

            Android.Net.Uri uri = Android.Net.Uri.FromFile(someFile);

            Android.Net.Uri contentURI = AndroidX.Core.Content.FileProvider.GetUriForFile(CTX,CTX.PackageName + ".provider",someFile);
            sendIntent.PutExtra(Intent.ExtraStream,uri);
            sendIntent.SetType("jpg/*");
            Android.App.Application.Context.StartActivity(sendIntent);

    /*        byte[] sendPDUData = GetMMSPDUData( Recipient,filePath,MessageBody);

            if (sendPDUData != null)
            {
                SendMMSData(sendPDUData);
            }*/
        }

File_Paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path name="external_files" path="."/>
</paths>

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.janinesafety2" android:installLocation="preferExternal">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
    <application android:label="janinesafety2.Android">
        <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true">
            <Meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
        </provider>
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.BLUetoOTH" />
    <uses-permission android:name="android.permission.BLUetoOTH_ADMIN" />
    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
</manifest>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)