2011-01-04 7 views
17

コンテンツプロバイダーを使用しない限り、他のAPKに含まれるリソースにアクセスすることは不可能だと思っていました。しかし、私はBetter Keyboardと呼ばれるアプリを見つけました。それはスキンを使用するので、私はスキンの例をダウンロードすることにしました。コンテンツプロバイダーを使用せずに別のAPKのリソースにアクセスすることは可能ですか?

An example skinは本当に驚いています。これはほとんどコードを含んでおらず、アクティビティのみを宣言し、コンテンツプロバイダは宣言しません。それにもかかわらず、リソースが含まれていて、スキンのAPKがインストールされている場合、Better Keyboardアプリから何とかアクセスされているようです。だからどうしたの?

答えて

3

私はあなたを信じて、この

PathClassLoader loader = 
new PathClassLoader ("/data/app/com.skin.apk", null,PathClassLoader.getSystemClassLoader()); 
InputStream f = loader.getResourceAsStream("res/drawable/icon.png"); 
Bitmap bitmap=BitmapFactory.decodeStream(f); 
BitmapDrawable b=new BitmapDrawable(bitmap); 
mButton.setBackgroundDrawable(b); 
0

ことが可能です探している試してみて、あなたは、リソースIDを取得しres.getidentifierが必要。しかし、スタイルリソースを取得するときにはうまくいかないようです。

関連する問題