2013-11-26 4 views
5

После некоторых исследований и практики, я заметил, что мы можем получить доступ к ресурсам из других приложений, использующих PackageManager какПуть Доступа к ресурсам и ресурсы идентификаторов других приложений

Resources resources = getApplicationContext().getPackageManager().getResourcesForApplication(appPackageName); 

, а лишь доступ к Resources не является достаточным. Нам нужны идентификаторы для каждого компонента Resource, такого как Drawables, layouts, Strings и т. Д. И т. Д. ... для доступа к ним из ресурсов.

Я искал в SO и очень много боролся о том, как получить идентификаторы ресурсов других приложений, но не получил правильного решения. Я видел в этом случае, некоторые люди предложили использовать методы как

resources.getIdentifier(String name, String defType, String defPackage); 
resources.getValue(String name, TypedValue outValue, boolean resolveRefs); 
resources.getValue(int id, TypedValue outValue, boolean resolveRefs); 

, но не знаю, как их использовать.

Мне нужно получить доступ к ресурсам (Drawables, Strings, Layouts ...) других приложений.

Помогите мне в этом беспокойстве. Любая помощь будет принята с благодарностью ...

спасибо всем и извините за мой английский ...

+4

Если это произойдет, это будет серьезное нарушение безопасности. –

+0

@AbhishekV, поскольку мы можем получить Ресурсы, я надеюсь, что мы сможем получить компоненты ресурсов, такие как Drawables, layouts и т. Д. И т. Д. ... не так ли? –

+1

@GopalRao Я могу получить ресурсы. Но чтобы получить чертежи из объекта Resources, нам нужно знать имя/идентификатор этого ресурса. Мы знали бы его знать только в том случае, если мы разработчики обоих приложений. –

ответ

0

У меня не было времени, чтобы пройти отлично, но это нужно сделать:

https://github.com/alt236/Android-Drawables---Android

Этот проект пытается получить все чертежи, по крайней мере, из другого приложения. Это также доступно в Google Play: Android Resource Viewer

+0

, но они ясно упомянули, что 'это приложение будет перечислять все общедоступные и частные ресурсы Android (то есть ресурсы, расположенные под« android.R. * »и под« com.android.internal.R . * ') для текущего устройства. '... но не Ресурсы других приложений ... –

1

Спасибо за ваш вопрос, Я могу получить доступ по следующему коду. Он работает нормально.

String lAppPkg = "com.example.sharedlogos"; 
resources = getApplicationContext().getPackageManager() 
          .getResourcesForApplication(lAppPkg); 
int lID = resources.getIdentifier(mID, "drawable", 
          lAppPkg); 
mImage.setBackground(resources.getDrawable(lID)); 
Смежные вопросы