一、 package简介
Android 程序最终要打包成.APK文件,每一个文件要有个java 风格的包名所确定,这个名字是在manifest.xml中指定的。应是唯一的,当进程在执行包内的组件的时候,这个进程的名字就是这个java风格包名,同时android也为它分配一个user ID,这个ID 实际上也用于Linux 系统的。这个ID是在安装程序时确定的。
二、两个app间共享数据(resources and data)
可以指定一个sharedUerId,来用于几个app间共享数据,不过这几个app得拥有同样的sharedUserId(当然有同样的signature,同样的PKI)。
public class BoneActivity extends Activity {
String targtePackageName = "org.five_secs.packages2222";
private Button btn_show;
// Decide on an appropriate context flag.
int flag = Context.CONTEXT_RESTRICTED;
private ImageView imageView;
private TextView txt_resource_path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bone);
imageView = (ImageView) findViewById(R.id.imageView1);
btn_show = (Button) findViewById(R.id.button1);
txt_resource_path = (TextView)findViewById(R.id.textView1);
btn_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Context ctx = getOtherPackageContext();
File path = ctx.getFilesDir();
txt_resource_path.setText(path.toString());
imageView.setImageDrawable(ctx.getResources().getDrawable(0x7f020001));
}
});
}
public Context getOtherPackageContext() {
Context targetContext = null;
try {
targetContext = createPackageContext(targtePackageName, flag);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return targetContext;
}

本文探讨了在Android环境下,如何通过共享UserID实现多个应用间的资源和数据共享,以及如何在不同包内执行特定操作,如获取并使用其他应用的资源路径。
1695

被折叠的 条评论
为什么被折叠?



