【问题标题】:Xamarin Android Essentials Location PermissionXamarin Android Essentials 位置权限
【发布时间】:2020-08-21 18:10:57
【问题描述】:

我正在尝试创建 Xamarin 跨平台应用,Android 版本需要位置访问权限。如果用户选择“不再询问”复选框拒绝位置权限,Android 不会再次提示位置访问。用户必须从电话设置中手动提供访问权限。

有没有办法检查用户是否从 MainActivity.cs 以外的页面中选择了“不再询问”?当用户再次登录时,如果用户选择了“不再询问”,我想向用户显示警报。

我发现 ShouldShowRequestPermissionRationale() 是确定用户是否选择了 “不再询问” 的唯一方法。但似乎只能从 MainActivity.cs 调用此方法。

【问题讨论】:

  • 我阅读了您在下面的帖子中分享的链接,但我仍然不清楚在另一个活动中实施 (ShouldShowRequestPermissionRationale(Manifest.Permission.WriteExternalStorage))。可以发个例子吗?
  • 你只需要在activity中调用ActivityCompat.ShouldShowRequestPermissionRationale方法,例如,有两个activity,一个是MainActivity,我需要在第二个activity(ActivityB)中检查权限,我只需要调用ActivityB中的方法直接
  • 感谢您的回复!我在 Mainactivity.cs 中使用了 ActivityCompat.ShouldShowRequestPermissionRationale 方法,并从另一个活动中调用它。但我收到一条错误消息 - “非静态字段、方法或属性 'Activity.ShouldShowRequestPermissionRationale(string)' 需要对象引用”。我还缺少什么吗?
  • 尝试使用ShouldShowRequestPermissionRationale(permission)或ActivityCompat.ShouldShowRequestPermissionRationale(activity,permission)
  • 我正在尝试从 另一个 .cs 文件调用 MainActivity.cs 中定义的 ShouldShowRequestPermissionRationale(permission),而不是带有 if (ActivityCompat.ShouldShowRequestPermissionRationale(Android.Manifest.Permission.AccessCoarseLocation)) { } 的 MainActivity.cs。但它会抛出一个错误 - “名称 'ActivityCompat' 在当前上下文中不存在”

标签: android xamarin.forms xamarin.android permissions android-permissions


【解决方案1】:

但是这个方法好像只能从 MainActivity.cs 调用。

您可以在每个活动中调用该方法,包括在片段中。

例如

在活动中:

 // Here, thisActivity is the current activity

if (ActivityCompat.ShouldShowRequestPermissionRationale(thisActivity,Manifest.Permission.WriteExternalStorage))
    {
       // Show an explanation to the user *asynchronously* -- don't block
       // this thread waiting for the user's response! After the user
       // sees the explanation, try again to request the permission.   
    }

你可以看看Explain why the app needs permissions

在片段中(支持v4):

if (ShouldShowRequestPermissionRationale(Manifest.Permission.WriteExternalStorage))
    {

    }

你可以看看here

其他包也有变化,比如(支持v13)

boolean shouldShowRequestPermissionRationale (Fragment fragment, 
            String permission)

你可以看看here

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 2021-11-20
    • 2017-09-20
    • 2017-09-23
    • 2015-12-16
    • 2022-06-21
    • 2015-12-13
    相关资源
    最近更新 更多