手机权限分组之类的就不说了,百度一大堆。
android权限, 勾选或者直接在清单文件中写:
首先由于android6.0以后使用动态权限,在xamarin.android中生成目标版本的选择对权限影响就比较大了。
之前我对目标版本的概念不是很清楚,暂时的情况是:
1. 选择利用SDK版本的编译,生成的包安装起来后应该是低于6.0版本的。
声明的权限会在app安装时直接赋予(如果用户不同意,无法安装app)。如果用户通过手机手动禁用了某些权限,则软件可能无法启动或奔溃。
2. 选择了6.0以上的版本进行生成,安装后权限不会直接赋予,需要app在运行过程中动态请求用户赋予权限。对于开发来说比较麻烦。我们现在为了快速开发,没有采用此方法,不同厂家不同机型对于动态权限的处理可能会有差异,后续有空我会对这个进行进一步测试。
3. 一个程序覆盖安装和升级,无法对旧包声明过的权限进行任何修改,但是新包可以增加新的权限。我这次碰到的主要问题就是这个,第一次安装的时候用的8.0版本生成,导致安装后默认没有赋予权限,使用动态获取的时候在小米手机上请求权限的时候没反应,查了半天原因,无果。后面对比以前的工程,利用sdk版本生成重新安装后,因为无法重新获旧包的权限,导致程序一直无法运行,最后修改包名,新安装,就自动赋予了权限。
4. 有一个情况需要进行说明,安卓8.0生成的包,在测试程序升级时,下载完安装包,进行安装时出现异常,FileUriExposedException 。大概参考 javascript:void(0) 。当然在xamarin中需要做转换了,后续再做。
待续...