android学习—— 通过包名访问其他apk下的资源

 
 
 
 
看到  微博  和  weico  都有 换肤功能  就大概看了看。


MainSkin.java  

 Context skinContext;  
	        try {  
	            skinContext = this.createPackageContext("com.hujl.skinone", Context.CONTEXT_IGNORE_SECURITY);  
	        } catch (NameNotFoundException e) {  
	            Log.e(TAG, "createPackageContext exception: " + e);  
	            e.printStackTrace();  
	            return;  
	        }  
	        Resources res = skinContext.getResources();  
	         
	       
	        mBg.setBackgroundDrawable( skinContext.getResources().getDrawable(R.drawable.bg));
	        System.out.println((skinContext.getResources().getDrawable(R.drawable.bg)).toString());
	        

通过资源名称访问 资源 。

     mBg.setBackgroundDrawable(res.getDrawable(res.getIdentifier("bg", "drawable", skinPkg)));  



SkinOne.apk  不需要 Activity 只要在 资源包下放  同一套图片就行了


也可以同过 


String[] skinPkgs = getPackageManager().getPackagesForUid(Process.myUid());  

获取所有同一个  android:sharedUserId="com.hujl.mainskin"  的资源包  ,可以实现多套 skin 的切换 。




你可能感兴趣的:(android学习—— 通过包名访问其他apk下的资源)