首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin窗体向PCL请求Android 6的互联网许可

Xamarin窗体向PCL请求Android 6的互联网许可
EN

Stack Overflow用户
提问于 2016-10-17 14:15:26
回答 3查看 4K关注 0票数 3

我正在用Xamarin.Forms构建一个跨平台的应用程序。对于内容,我使用一个对API的异步调用,该API返回JSON。所以我需要网络许可。

与API联系的代码示例:

代码语言:javascript
复制
var data = await wc.GetStringAsync("http://website.for.content/content-api/Category/?format=json");

这一行出现在Android宣言中:

代码语言:javascript
复制
  <uses-permission android:name="android.permission.INTERNET" />

我为应用程序编写的所有代码都在一个可移植类库中。所以我还没有任何特定于平台的代码。

如何从可移植类库检查和请求internet权限?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-17 14:36:02

NormalDangerous权限,Internet访问是正常权限,因此只需要在应用程序的清单中为安装目的定义并在运行时自动授予。

正常权限包括应用程序需要访问应用程序沙箱之外的数据或资源的区域,但对用户的隐私或其他应用程序的操作风险很小。例如,设置时区的权限是正常权限。如果应用程序声明需要正常权限,系统将自动将该权限授予应用程序。

参考文献:https://developer.android.com/guide/topics/security/normal-permissions.html

票数 3
EN

Stack Overflow用户

发布于 2016-10-17 14:39:14

你确定你需要检查的是许可吗?权限是用户在安装应用程序之前需要从用户那里获得的静态声明性的东西。如果不更新应用程序并因此得到用户的明确接受,则无法更改App权限。所以权限背后的逻辑很简单:如果您的应用程序

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET" />

在它的清单和应用正在运行,然后您可以确保用户已经接受了应用程序的要求。

如果您针对SDK23或更高版本的应用程序(Android6.0或更高版本)而您的应用程序需要危险权限,则需要在运行时请求权限

//假定thisActivity是当前活动int permissionCheck = Manifest.permission.WRITE_CALENDAR);

无论如何,在运行时,您可能愿意检查与权限无关的internet访问的可用性。

要做到这一点,请看这里:如何检查Android上的internet访问

公共布尔值getSystemService(Context.CONNECTIVITY_SERVICE);isOnline() { ConnectivityManager cm = (ConnectivityManager) NetworkInfo netInfo = cm.getActiveNetworkInfo();返回netInfo != null & netInfo.isConnectedOrConnecting();}

请注意,代码是Android特定的,不能放入PCL中。因此,您将需要一个PCL声明的界面和一个特定于Android的实现。

票数 1
EN

Stack Overflow用户

发布于 2016-12-01 15:13:43

在试图使用xzing条形码扫描仪(当然,它在任何其他权限中都有帮助)时,我遇到了这个问题,我的解决方案是在我的MainActivity : FormsAppCompatActivity OnCreate(捆绑包)中添加以下代码:

代码语言:javascript
复制
  if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
        {
            int mycode = 0;
            Android.Support.V4.App.ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.Camera }, mycode);
        }    

 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {            

        ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40088777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档