我正在使用Xamarin Forms的权限插件。 当我致电RequestPermissionsAsync时,通话似乎永远停滞了。下一行永远不会调用。 我所做的安装与文档完全相同。 那是我的代码
var result = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Location,Permission.Camera,Permission.Microphone,Permission.Storage);
Console.WriteLine(result)//此行从不被调用
下面是清单
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="com.commonground.streetdeploy.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<application android:label="Street Deploy" android:allowBackup="false" android:icon="@mipmap/icon">
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.commonground.streetdeploy.fileprovider"
android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
<!--<meta-data android:name="com.google.android.geo.API_KEY" android:value="xxx" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxx" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="xxx" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="xxx" />-->
</application>
这是主要活动
[活动(标签=“街道部署”,图标=“ @ mipmap / icon”,主题=“ @ style / MainTheme”,MainLauncher = true,ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 公共类MainActivity:global :: Xamarin.Forms.Platform.Android.FormsAppCompatActivity { 受保护的异步重写void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
/////////////////////////my code
await Plugin.Media.CrossMedia.Current.Initialize();
Xamarin.FormsGoogleMaps.Init(this, savedInstanceState);
UserDialogs.Init(this);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
/////////////////////////end my code
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this,savedInstanceState);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
答案 0 :(得分:0)
确保您在特定平台上具有添加用户权限。
在iOS中(info.plist)
<key>NSAppleMusicUsageDescription</key>
<string>App want to access your Music </string>
<key>NSCameraUsageDescription</key>
<string>App want to access your Camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>App want to access your Microphone</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App want to access your PhotoLibrary</string>
在Android(Manifest.xml)中
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CAMERA" />
和线
Console.WriteLine(result);
当您同意或拒绝该申请时,将会呼叫。