Android系统为每个应用分配一个唯一的UID,具有相同的UID的应用才能共享数据。两个应用通过ShareUID共享数据,需要相同的ShareUID之外还需要相同的签名才可以。在这种情况下他们可以互相访问私有数据,比如data
目录,组件信息等。如果他们跑在同一个进程中,那么他们除了能共享data
目录,组件信息,还可以共享内存数据。
具体实例代码如下
第一个应用
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wxq.test1"
android:sharedUserId="com.wxq.test">
</manifest>
第二个应用
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wxq.test2"
android:sharedUserId="com.wxq.test">
</manifest>
如在第二个应用的MainActivity中获取第一个应用的SP
try {
Context firstContext=createPackageContext("com.wxq.test1",Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sp = firstContext.getSharedPreferences("sp",MODE_PRIVATE);
String text = sp.getString("key","empty");
Log.d(TAG,"text="+text);
} catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }