推荐安卓开发神器(里面有各种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中的键值对。

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android文件下载之进度检测
  6. Android(安卓)使用 ios中的部分Emoji表情(也可以替换任意系统的em
  7. CyanogenMod源码下载和编译(Android(安卓)ROM定制基础篇)
  8. Android(安卓)的签名
  9. Android应用框架之PackageManagerService

随机推荐

  1. Android: 绘制的文本如何排版
  2. Android Studio主要目录及文件简介
  3. Android 下移植WIFI 驱动
  4. 在Android模拟机上跑javaeye android 客
  5. Cocos2d-x for android 使用Box2d报错解
  6. Android之Application引用方式
  7. Android特色开发之桌面组件
  8. 转 Android监听键盘弹出收起
  9. Maven In Android
  10. Android(安卓)Accessibility 辅助功能简