网上找了很久,未果。
偶然的机会,看到aiMinesweeper.HelloSkin的AndroidManifest.xml里有那么一个属性:android:sharedUserId="com.artfulbits.aiminesweeper"
顿时感到看到了阳光,马上google了一下,发现了关键的地方。

SharedUserid
拥有同一个User id的多个APK可以配置成运行在同一个进程中,所以默认就是可以互相访问任意数据。也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件,就像访问本程序的数据一样。

哈哈,这个就是我要找的东西,马上开始试验。

工程1(主工程)
只有1个画面,包含1个为了测试用的button
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.test.android.skin.main" android:versionCode="1"android:versionName="1.0" android:sharedUserId="com.test.android.skin"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".MainActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>


MainActivity
@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Context friendContext = null;try {friendContext = this.createPackageContext("com.test.android.skin.myskin",Context.CONTEXT_IGNORE_SECURITY);} catch (NameNotFoundException e) {e.printStackTrace();}Button btn = (Button) findViewById(R.id.btn);btn.setBackgroundDrawable(friendContext.getResources().getDrawable(R.drawable.btn_background));}


drawable下放一张名为btn_background.pnd的图片

工程2(皮肤工程)
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.test.android.skin.myskin" android:versionCode="1"android:versionName="1.0" android:sharedUserId="com.test.android.skin"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".MainActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest> 


drawable下也放一张名为btn_background.png的图片(换成xml文件就可以实现不同状态不同图片的功能)

把2个工程都安装到模拟器上以后,运行工程1,button上的图片果然是工程2中的btn_background.png,终于成功了。

测试代码(主工程和皮肤工程)已上传,没写注释望见谅。

更多相关文章

  1. Android如何将程序打成jar包
  2. Android下的Gallery显示技术分析(三)
  3. Android(安卓)Studio 迁移 AndroidX 遇到 jetifier相关问题的记
  4. Qt5.12.7 搭建 Android(安卓)开发环境
  5. Android实现镜花水月的效果
  6. Android打开手机相册获取图片路径
  7. React Native 环境变量配置(window7)
  8. Android(安卓)Webview upload 图片上传
  9. Android(安卓)Glide设置图片的圆角

随机推荐

  1. Android记事本程序源码
  2. Android(安卓)Input Event Dispatching
  3. android 模拟物理按键
  4. VLC for Android(安卓)on Linux
  5. android添加广告之--admob
  6. 四、[Android(安卓)UI界面] android继承
  7. Android(安卓)| class | tree
  8. android访问网络图片
  9. android SlidingDrawer 源码
  10. Android(安卓)debugging using Lauterbac