读取email数据库的权限问题
来源:互联网 发布:淘宝账号从哪里能买到 编辑:程序博客网 时间:2024/05/20 18:50
代码如下:
Cursor cur = mContext.getContentResolver().query(
Uri.parse("content://com.android.email.provider/message"),
null,
null,
null,
null);
报错没有的权限是<uses-permission android:name="com.android.email.permission.ACCESS_PROVIDER" />,但确实是添了的。
解决办法:
导致错误的原因如下:
因为Android本身自带的email应用的保护级别很高,是android:protectionLevel="signatureOrSystem",从android sdk自带文档了解到此种权限保护级别需要system本身镜像应用或者是同system镜像具有相同的签名应用才可以访问,因此一般的第三方应用即使添加了permission也还是会报错的。
解决方法:(生成system.img)
1 将自己的应用方到android源代码的packages/apps/目录下,添加Android.mk文件
2 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
3 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
4 使用mm命令来编译,生成的apk就有同system一样的权限了。
5 在android根目录下用make snod重新生成system.img
6 启动emulator运行下应用看看是否好了。
由于我这里的email数据库没有任何信息,我只好打出来columns来看,和我期望读取的一样。
网上还有另外一种方法,但我用signapk报错了所以也就不介绍了,等解决好了再继续介绍。
困扰了好久的问题终于解决了希望能对大家都有帮助。
permission可分四个等级
android:protectionLevel="normal"
android:protectionLevel="dangerous"
android:protectionLevel="signature"
android:protectionLevel="signatureOrSystem"
根据SDK的文档和查的资料来讲signatureOrSystem这种权限的应用第三方的应用时无法单独访问的,要么把自己的应用一同生成system.img,要么就得和system.img具有一样的签名。像我这个若单独做个应用的话那么肯定是实现不了的,因为每款机器签名肯定都不一样,解决的办法就是把软件集成到手机厂商的img里面。因此你说的放到真机里面肯定不行的,它不能作为一款第三方软件发布,若将已经集成的img文件重新烧一下手机的话我想应该是可以的了。
- 读取email数据库的权限问题
- android读取email数据库的权限问题
- 读取本地文件的权限问题
- 读取本地文件的权限问题
- oracle数据库的权限问题
- C#读取注册表的权限问题
- 设置读取SD卡权限的问题
- C#读取注册表的权限问题
- mysql数据库远程登录权限的问题
- 关于权限的 数据库设计问题!
- 关于oracle数据库connect的权限问题
- phpmyadmin管理数据库时的权限问题
- 链接远程数据库的权限问题
- 血的教训 关于6.0的读取权限问题
- 数据库中读取图片的问题
- 数据库读取中文乱码的问题
- access 数据库的image读取图片问题
- C# 中读取数据库数据的问题
- 用C语言实现Sieve of Atkin算法
- Android高手进阶教程(十九)之---Android开发中,使用线程应该注意的问题!
- C++中的向量(Vector)用法
- C51 代码优化测试
- 泛型技术的三个学习阶段
- 读取email数据库的权限问题
- Do the Untwist
- Android高手进阶教程(二十)之---Android与JavaScript方法相互调用!
- 组合和聚合的区别
- DELL N4050 音频驱动问题处理
- Android高手进阶教程(二十一)之---Android中创建与几种解析xml的方法!
- LR学习笔记之—参数和变量
- Android高手进阶教程(二十二)之---Android中几种图像特效处理的集锦!!
- New Year Garland