我想在 VS2019 - .Net Standard2.1 和 Target Framework API28 for Android 中使用FileProvider從存盤目錄安裝 APK 檔案。但是我得到了錯誤"The name 'FileProvider' does not exist in the current context".即使我嘗試更改 .Net 2.0 同樣的錯誤。
Java.IO.File file = new Java.IO.File(filepath);
if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
{
Android.Net.Uri URIAPK = FileProvider.GetUriForFile(Android.App.Application.Context, Android.App.Application.Context.ApplicationContext.PackageName ".provider", filepath);
Intent intS = new Intent(Intent.ActionInstallPackage);
intS.SetData(URIAPK);
intS.SetFlags(ActivityFlags.GrantReadUriPermission);
Android.App.Application.Context.StartActivity(intS);
}
else
{
Android.Net.Uri URIAPK = Android.Net.Uri.FromFile(filepath);
Intent intS = new Intent(Intent.ActionView);
intS.SetDataAndType(URIAPK, "application/vnd.android.package-archive");
intS.SetFlags(ActivityFlags.NewTask);
Android.App.Application.Context.StartActivity(intS);
}
我嘗試使用命名空間"Using Android.v4.content.FileProvider;"仍然錯誤,因為缺少 .dll 所以,當我要安裝 Xamarin.Android.Support.Compat Nuget 時出現抑制錯誤
NU1202 包 Xamarin.Android.Support.Compat 28.0.0.3 與 netstandard2.1 (.NETStandard,Version=v2.1) 不兼容。包 Xamarin.Android.Support.Compat 28.0.0.3 支持:
- monoandroid60 (MonoAndroid,Version=v6.0)
- monoandroid70 (MonoAndroid,Version=v7.0)
- monoandroid71 (MonoAndroid,Version=v7.1)
- monoandroid80 (MonoAndroid,Version=v8.0)
- monoandroid81 (MonoAndroid,Version=v8.1)
- monoandroid90 (MonoAndroid,Version=v9.0)
給我安裝 APK 檔案的解決方案或任何其他方法。
uj5u.com熱心網友回復:
但是我收到錯誤“當前背景關系中不存在名稱‘FileProvider’”
對于這個錯誤,請參考正確的包。總的來說,我們建議使用最新的nugetXamarin.AndroidX.AppCompat
在代碼中,我們應該按如下方式匯入這個 nuget:
using AndroidX.AppCompat.App;
using AndroidX.Core.Content;
的總代碼FileProvider應該是:
Android.Net.Uri URIAPK = AndroidX.Core.Content.FileProvider.GetUriForFile(Android.App.Application.Context, Android.App.Application.Context.ApplicationContext.PackageName ".provider", filepath);
在這種情況下,錯誤“當前背景關系中不存在名稱‘FileProvider’”將消失。
如果您想使用最新的 nuget Xamarin.AndroidX.AppCompat,您應該將您的應用程式遷移到 AndroidX,有關更多資訊,您可以查看檔案:https ://docs.microsoft.com/en-us/xamarin/android/platform/androidx#migration-工具。
另外,記得添加正確的附加組態檔以遵守新的嚴格模式:
(AndroidX) 將以下內容添加到您的 AndroidManifest.xml<application>標簽內:
<provider android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
有關更多資訊,請查看:https : //github.com/jamesmontemagno/MediaPlugin#android-file-provider-setup。
筆記:
我們強烈建議您升級到最新的 Visual Studio 并默認使用較新的 Nugets,以避免遷移和兼容性問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/402378.html
標籤:
