簡體   English   中英

如何在 Xamarin Forms 中以編程方式從 Android 清單文件中獲取提供者權限值?

[英]How to get provider authorities value from an Android manifest file programmatically in Xamarin Forms?

我正在使用 Xamarin.Forms 開發 Android,並且正在使用如下所示的 AndroidManifest.xml 文件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application android:label="MyApp.Android">
    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="myapp.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
          android:name="android.support.FILE_PROVIDER_PATHS"
          android:resource="@xml/provider_file_paths" />
    </provider>
</application>

我想以編程方式獲取provider指令的android:authorities值(在我的情況下為“myapp.fileprovider”作為字符串)。 Xamarin.Forms 怎么可能?

我找到了答案。

var context = Android.App.Application.Context;
var component = new Android.Content.ComponentName(context, Java.Lang.Class.FromType(typeof(Android.Support.V4.Content.FileProvider)));
var info = context.PackageManager.GetProviderInfo(component, Android.Content.PM.PackageInfoFlags.MetaData);
var authority = info.Authority;

Kotlin 版本作為輔助函數

fun getFileProviderAuthorities(context: Context): String {
    val component = ComponentName(context, FileProvider::class.java)
    val info = context.packageManager.getProviderInfo(component, android.content.pm.PackageManager.GET_META_DATA)
    return info.authority
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM