Resources.getResourcePackageName(), Resources.getResourceTypeName(), and Resources.getResourceEntryName() return the names associated with a resource ID. And by convention, you will get the type name "layout" for layout resources, "drawable" for drawable, etc... however, this is only a convention, and nothing really enforces it.
On Sun, Aug 23, 2009 at 5:29 PM, Spektor Yaron <[email protected]> wrote: > Thanks again Dianne, > i don't think your solution will do as i also need to know which class i am > in (i need to know that 0x7f020000 is a drawable and that 0x7f030000 is a > layout). > Is it possible to get the information i need through the AssetManager? any > way to hack into the binary data structure? > if not i guess it is back to the drawing-board for me..... > > > On Mon, Aug 24, 2009 at 3:09 AM, Dianne Hackborn <[email protected]>wrote: > >> Sorry but this just isn't something we have APIs for right now. I don't >> recall anyone wanting to do this kind of thing before, so it hasn't been >> high on our priority list. >> >> Note that "layout" etc at the resource level are not really folder names >> -- they are just symbolic names for the part of the resource identifier >> integer that categorizes the resource. The resource system itself revolves >> almost entirely around integer identifiers; the symbolic names are pretty >> much just there for the convenience of developers. There is a big binary >> data structure in the .apk that is used to map from integer identifiers to >> the corresponding resource value (which may be stored directly inside the >> data structure for simple resources like integers and strings, or may be a >> path to another file in the .apk for things like xml data or images). >> >> You could probably hack something together by taking advantage of the >> current implementation detail that the resource system assigns resource >> identifiers in a sequential manner (sequentially incrementing the entry part >> and type part of the integer), to step through retrieving names until you >> get a resource not found exception. However, I can't make any guarantees >> that this will work in the future. >> >> On Sun, Aug 23, 2009 at 3:44 PM, Spektor Yaron <[email protected]>wrote: >> >>> Hi again, >>> just to verify that i am explaining myself correctly. my code takes all >>> the relevant apk's based on the intent filter and wants to take all the >>> resources from the \layout to later be able to inflate them. >>> i get the package name (e.g.,"com.android.demo.notepad2") from the >>> returned resolveInfo and i know the folder name (e.g., layout etc.) all i >>> need now is a method to get all the resources in something like: >>> "com.android.demo.notepad2:layout" on a diffrent apk. >>> thanks >>> >>> >>> On Mon, Aug 24, 2009 at 12:18 AM, Spektor Yaron <[email protected]>wrote: >>> >>>> Hi, >>>> i know it is done somehow by other applications (for example adding new >>>> skins to an existing application w/o knowing the name of the layout ahead >>>> of >>>> time) >>>> what am i missing here. is this not the way to do it? >>>> should i copy all resources to the file system and read them from there? >>>> would that make sense? would i be able to inflate a view with them this >>>> way? >>>> Thanks, >>>> >>>> >>>> On Sun, Aug 23, 2009 at 6:44 PM, Dianne Hackborn >>>> <[email protected]>wrote: >>>> >>>>> I don't believe there is any way to do that from an application. From >>>>> a desktop, you can use the aapt dump commands to find out about the >>>>> contents >>>>> of the .apk. >>>>> >>>>> >>>>> On Sun, Aug 23, 2009 at 8:15 AM, Spektor Yaron <[email protected]>wrote: >>>>> >>>>>> Hi, >>>>>> i was able to play around with the resource on a different apk and get >>>>>> them using createPackageContext as you suggested. >>>>>> here is an example of the code: >>>>>> otherAppContext = >>>>>> this.createPackageContext("com.android.demo.notepad2",Context.CONTEXT_INCLUDE_CODE >>>>>> + Context.CONTEXT_IGNORE_SECURITY); >>>>>> int resID = otherAppContext.getResources().getIdentifier("icon", >>>>>> "drawable", "com.android.demo.notepad2"); >>>>>> >>>>>> this works well. >>>>>> now i am trying to get ALL the drawables (or all the layouts) in this >>>>>> package. i tried a multitude of ways including reflection and >>>>>> AssetManager >>>>>> but was unsuccessful. any tips here? >>>>>> just to be clear i can not use R.drawable.icon as this is a different >>>>>> context >>>>>> >>>>>> -- >>>>>> Yaron Spektor >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Dianne Hackborn >>>>> Android framework engineer >>>>> [email protected] >>>>> >>>>> Note: please don't send private questions to me, as I don't have time >>>>> to provide private support, and so won't reply to such e-mails. All such >>>>> questions should be posted on public forums, where I and others can see >>>>> and >>>>> answer them. >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Yaron Spektor >>>> >>> >>> >>> >>> -- >>> Yaron Spektor >>> >>> >>> >> >> >> -- >> Dianne Hackborn >> Android framework engineer >> [email protected] >> >> Note: please don't send private questions to me, as I don't have time to >> provide private support, and so won't reply to such e-mails. All such >> questions should be posted on public forums, where I and others can see and >> answer them. >> >> >> >> > > > -- > Yaron Spektor > > > > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support, and so won't reply to such e-mails. All such questions should be posted on public forums, where I and others can see and answer them. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

