我即将在 Google Play 上发布应用程序,但我的包因使用此权限而被拒绝:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
我将此权限包含在 AndroidManifest.xml 中,因为如果没有它,调用 Email.ComposeAsync 函数将导致出现 FeatureNotSupportedException。
var message = new EmailMessage
{
Subject = $"Új funkció kérése / Hiba bejelentés ({AppInfo.AppName} {AppInfo.AppVersion})",
Body = "Tisztelt Szoftverfejlesztő!\r\n\r\nKérés / hiba leírása...\r\n\r\nÜdvözlettel\r\n\r\n",
To = [AppInfo.AppEmail],
BodyFormat = EmailBodyFormat.PlainText
};
if (!String.IsNullOrEmpty(AppInfo.DevEmail))
{
message.Bcc = [AppInfo.DevEmail];
}
//await Email.Default.ComposeAsync(message).ConfigureAwait(false);
await Email.ComposeAsync(message).ConfigureAwait(false);
我检查了文档,它没有指定我应该为该函数调用添加哪个权限才能工作,或者为什么它需要 QUERY_ALL_PACKAGES 权限。
以下是例外详情:
Microsoft.Maui.ApplicationModel.FeatureNotSupportedException
调用堆栈:
0xFFFFFFFFFFFFFFFF
在 Android.Runtime.RuntimeNativeMethods.monodroid_debugger_unhandled_exception
C#0x1A
在 Android.Runtime.JNINativeWrapper._unhandled_exception
于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:13,5
C#0x1D
在 Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V
于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:27,26
C#0x17
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
C#0x6
在 System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0
C#0xC
在 Android.App.SyncContext.<Post>b__8_0
于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:36,19
C#0xE
在 Java.Lang.Thread.RunnableImplementor.Run
于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36,6
C#0x8
在 Java.Lang.IRunnableInvoker.n_Run
于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Java.Lang.IRunnable.cs:84,4
C#0x8
在 Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V
于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:26,5
C#最好的方法是避免使用 QUERY_ALL_PACKAGES 权限。有可能这样做吗?
根据docs,您需要将其添加到Android清单中
<queries>
<intent>
<action android:name="android.intent.action.SENDTO" />
<data android:scheme="mailto" />
</intent>
</queries>