`
407827531
  • 浏览: 1060828 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

android sharedUserId sharedPreferences

 
阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

用户IDs和文件存取
每一个Android应用程序(。apk文件)都会在安装时就分配一个独有的Linux用户ID,这就为它建立了一个沙盒,使其不能与其他应用程序进行接触(也不会让其它应用程序接触它)。这个用户ID会在安装时分配给它,并在该设备上一直保持同一个数值。
由于安全性限制措施是发生在进程级,所以两个package中的代码不会运行在同一个进程当中,他们要作为不同的Linux用户出现。我们可以通过 使用AndroidManifest。xml文件中的manifest标签中的sharedUserId属性,来使不同的package共用同一个用户 ID。通过这种方式,这两个package就会被认为是同一个应用程序,拥有同一个用户ID(实际不一定),并且拥有同样的文件存取权限。注意:为了保持安全,只有当两个应用程序被同一个签名签署的时候(并且请求了同一个sharedUserId)才会被分配同样的用户ID。
所有存储在应用程序中的数据都会赋予一个属性——该应用程序的用户ID,这使得其他package无法访问这些数据。当通过这些方法getSharedPreferences(String, int),openFileOutput(String, int)或者 openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)来创建一个新文件时,你可以通过使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE标志位来设置是否允许其他package来访问读写这个文件。当设置这些标志位时,该文件仍然属于该应用程序, 但是它的global read and/or write权限已经被设置,使得它对于其他任何应用程序都是可见的。
例如:APK A 和APK B 都是C公司的产品,那么如果用户从APK A中登陆成功。那么打开APK B的时候就不用再次登陆。 具体实现就是A和B设置成同一个User ID
packagename APK A的AndroidManifest:

 

<manifest xmlns:android="http://schemas。android。com/apk/res/android" package="com.Android.demo.a1" android:sharedUserId="com.c">
packagename APK A的AndroidManifest: <manifest xmlns:android="http://schemas。android。com/apk/res/android" package="com.Android.demo.b1" android:sharedUserId="com.c">

 

 这个"com.c" 就是user id。 APK B就可以像打开本地数据库那样打开APK A中的数据库了。APK A把登陆信息存放在A的数据目录下面。APK B每次启动的时候读取APK A下面的数据库判断是否已经登陆:
APK B中通过A的package name 就可以得到A的 packagecontext:

 

friendContext = this.createPackageContext( "com.android.demo.a1", Context,CONTEXT_IGNORE_SECURITY);

 

 通过这个context就可以直接打开数据库或通过sharedPreferences读取A中的键值对。

分享到:
评论

相关推荐

    Android-sharedUserId数据共享

    Android-sharedUserId数据共享

    Android SharedUserID Demo

    Android SharedUserID Demo 包含: 1.同一Apk中的同一包中的Activity调用时进程状况验证 2.同一Apk中的不同包的Activity调用时进程状况验证 3.同一Apk中Activity process属性修改后进程状况验证 4.不同Apk中...

    安卓按键模拟点击相关-Android手机屏幕助手用来替换NavigationBar虚拟导航按键。由于涉及到系统按键消息。所以需要在源码环境下编译需要系统签名需要声明androidsharedUserId=android.uid.system.zip

    Android手机屏幕助手,用来... 所以需要在源码环境下编译,需要系统签名,需要声明android_sharedUserId=_android.uid.system_ .zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    使用Android Studio实现为系统级的app签名

    我们在做系统级的app开发时,往往会在AndroidManifest.xml文件中添加:android:sharedUserId=”android.uid.system”以获取系统级的权限,如果你正在使用Android Studio进行开发,编译生成的apk会因为签名问题无法...

    android系统签名工具

    通过在每个App中使用sharedUserId设置即可共享系统账户权限,比如android:sharedUserId="android.uid.system" 这样就是用了system这个uid了。给apk增加系统签名,否则一些系统apk将无法安装,使用命令: java -jar ...

    如何安装系统认证签名过的APK

    系统中所有使用 android.uid.system 作为共享 UID 的 APK ,都会首先在 manifest 节点中增加android:sharedUserId=“android.uid.system”,然后在 Android.mk 中增加 LOCAL_CERTIFICATE := platform。可以参见 S

    sharedUserId实现不同APK数据共享

    sharedUserId实现不同APK数据共享

    Android系统签名文件生成工具

    app获取系统级权限有两种方法,一个是root,另一个是在AndroidManifest中添加android:sharedUserId="android.uid.system",但是Manifest文件中加入sharedUserId后,我们会发现一个问题,就是INSTALL_FAILED_SHARED_...

    Android 插件Demo

    Android 插件Demo 事例 android:sharedUserId="org.igeek.android.pluginframework.demo

    Android的权限机制之—— “沙箱”机制sharedUserId和签名

    NULL 博文链接:https://dengzhangtao.iteye.com/blog/1989065

    android 添加系统权限 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名 解决方案: 1. 找到编译目标系统时的签名证书platform.pk8和platform.x509.pem,在android源码目录build\...

    8.1 android 串口编程

    android:sharedUserId=“android.uid.system” 不过这样的话,app就要放到源码里编译了。 2、 /dev/ttyS4要有读写权限 (你的串口不一定是这个ttyS4) ls -l /dev/ttyS4 如果没有读写权限,记得在init.rc里面添加 ...

    Android皮肤架包

    Android皮肤架包,此架包很小,但是包含了更换皮肤的功能,全局可用,详情请认真读此说明:使用架包方法(我们在创建Activity的时候会继承Activity,然而使用此架包我们就继承BaseActivity这个类和Activity没有任何...

    Android实现系统重新启动的功能

    首先定义布局文件: 代码如下:&lt;?xml version=”1.0″ encoding=”utf-8″?&gt;&lt;manifest xmlns:android=”http://schemas.android.com/apk/res/android” package u201dcom.hzhi....android:sharedUserId&gt; 

    Android实现关机重启的方法分享

    实现系统重启的APK需要system的权限,在AndroidManifest.xml中增加android:sharedUserId=”android.uid.system”,再修改签名即可; 具体方法参考: 点击打开链接 1、使用PowerManager来实现:代码: 代码如下:...

    android功能模块 插件化demo

    避免升级时频繁的打包,下载和安装apk,把新增的功能用插件化的形式,安装插件即可升级apk

    AndroidManifest.xml文件详解.ppt

    android:sharedUserId 指定在多个包之间共享的用户ID android:versionCode 内部版本号 android:versionName 版本名称 描述:定义一个用来控制其他包对本包内的组件访问的全乡对象。这将产生一个新的结构体,应用组件...

    不刷root权限修改系统时间

    在不刷root权限的情况下,如果想在应用层修改系统时间是...本资源是通过android:sharedUserId="android.uid.system",先打包apk,然后用压缩文件打开apk,删除META-INF文件夹下的CERT.SF和CERT.RSA,然后运行.bat处理即可

    Android5.1系统通过包名给应用开放系统权限的方法

    常用的给应用开放系统权限的方法是直接将该应用做成系统应用(即在AndroidManifest.xml文件里加上:android:sharedUserId=”android.uid.system”),但是这种做法限制了应用本身的自由,也就是说经过系统签名后的...

Global site tag (gtag.js) - Google Analytics