I'm trying to figure out how to write an app that uses HTC API's. Specifically I want my app to switch scenes but I can't figure out how to call in to their libraries.
I unzipped Rosie.apk and it is only resources, no java.
it's the classes.dex
Right but how do I import something from a dex in eclipse and build it?
manicmethod said:
Right but how do I import something from a dex in eclipse and build it?
Click to expand...
Click to collapse
no way.
.dex is compiled, not source.
does java have a way to forward-declare classes so I can tell java they'll be there when it tries to run?
I haven't done much (read: any) actual development on Android yet, as I just got my Hero recently (developing solely on an emulator? ewww), but isn't the typical way of interacting with other applications on Android through Intents and Actions?
Browsing through the AndroidManifest.xml file in Rosie.apk, there seems to be a reference to com.htc.launcher.ThemeChooser.action.theme_change - Maybe this would be a place to start?
Ah yes, I'm still in the mindset of calling other peoples interfaces to do things. Thanks for the tip.
trying to figure out what to do with it will be fun, I'm sure
So com.htc.launcher.ThemeChooser.action.theme_change launches the chooser. I need to be able to change the scene under the covers by telling it what theme to switch to, any one have any ideas?
Glad to see that you made a little bit of progress I did some more searching, but this time in Rosie.odex. I found an ACTION_THEME_CHANGE string. Perhaps it could be something like this:
Component Name: com.htc.launcher.ThemeChooser.action.theme_change
Action: ACTION_THEME_CHANGE
Data: ?
Like I mentioned, I'm new to this stuff I'm not sure if there is a way to log or monitor intents (that would sure make this easy, wouldn't it?).
After looking at this more I think I need to hook into the htc settings content provider and see if I can change the settings like that. I found this in the manifest.xml:
E: provider (line=191)
A: android:name(0x01010003)="LauncherProvider" (Raw: "LauncherProvider")
A: android:readPermission(0x01010007)="com.htc.launcher.permission.READ_SETTINGS" (Raw: "com.htc.launcher.permission.READ_SETTINGS")
A: android:writePermission(0x01010008)="com.htc.launcher.permission.WRITE_SETTINGS" (Raw: "com.htc.launcher.permission.WRITE_SETTINGS")
A: android:authorities(0x01010018)="com.htc.launcher.settings" (Raw: "com.htc.launcher.settings")
so according to http://developer.android.com/guide/topics/providers/content-providers.html it looks like the Uri should be:
Uri u = Uri.parse("content://com.htc.launcher.settings");
except when I try that I get an exception saying that is an invalid URI :\
I'm not sure that it would be a setting. I mean, I'm sure you could find an attribute to set, but I don't think the switch would be instantaneous (likely requiring a reboot to show), unless there is something listening for changes to the settings. I could be wrong, of course.
Figured it out:
final Uri u = Uri.parse("content://com.htc.launcher.settings/widget_workspaces");
And the resulting table has
_id, display_name, created, status, and ancestor_id
So I think I can change status and then figure out how to throw a notify
I guess you were right, it looks like the widget_workspaces table has all the scenes available but the status field doesn't do what I assumed it would, rather it looks like it indicates whether a scene was shipped by HTC, is your saved scene or is unsaved.
I was really hoping this would do it because I don't know where to look now.
Well, looking at the ddms, it seems like I am wrong. It looks like ThemeChooser activity will do the swapping itself after you have selected a different scene. So it doesn't look like you will be able to make use of HTC's packages to do the swapping for you. Unfortunately, the only thing I can think that you could do next, is figure out how it is storing the scenes and load it and call all of the loading functions yourself...
Well, I have no way of calling their loading functions so I guess I'm out of luck :X
Check out smali and baksmali to snoop around in the classes.dex.
P
I used ddx1.7 to snoop in the dex files and found the tables and everything they were storing settings in. Unfortunately it looks like they neither store the current active scene in the table nor have an intent to call that will switch it without popping up the dialog.
It looks like what I want to do isn't possible.
Hi all,
while analyzing some code for WM I found out a call like this:
Code:
SetThreadPriority(0x41, THREAD_PRIORITY_ABOVE_NORMAL);
0x41 is a handle, and it seems to be a fixed one. The only threads with fixed handles are (for what I know of coz) those that resides into NK.exe. Do you have any clue about what this handle is referring to, or where I could look? I didn't find any valid hint browsing the source from the platform builder.
Thank you very much!
Maybe someone knows how to get the thread ID from the handle? I could just go reverse, but until now I didn't find a way.
Hello everybody,
I'm quite new to Android, but I have some good skill in programming. I saw that Android have some limitation on bluetooth applications.
For example it have a discovery timeout of about 120 seconds(300 seconds max) and after that the application need the user help to extend the discovery time.
Another limitation is that there isn't the possibility to create bluetooth connection between two unpaired device, this limit force users to know each other and limit the possibility to build great proximity application.
So I looked into the Android source code and I found some good point to change to bypass and change these limitation.
Now I want to know how to build a ROM from the my modified source for my Desire.
There is the need to build all the kernel and framework? or can I just to put a modified framework.jar inside the actual system?
I really cannot find any useful guide on how to build from the source android against Desire.
Thanks in advance, any help are very appreciated
Marco
Hi all-
I am relatively new to android development, and the current project I've picked out for myself has proven to be more difficult than I thought it would be.
My goal is to create an app that will tell me about wimax network(s) my phone sees with more detail than you get from the settings application or something. Looking at the WifiManager class in developer.android, it looks like I am looking for the Wimax equivalent to getScanResults() - something that returns the list of networks seen in the last scan.
So after some digging online I found references to a Toggle4G widget that does getSystemService("wimax") to get a WimaxManager object, and uses reflection to get the getWimaxState() and setWimaxState(bool) methods. I used getMethods() on the WimaxManager object, and got a list similar to this one I found on pastebin:
EDIT: new user = unable to post links? Well, here's the pastebin code so you can find it
pastebin: 8ktAtcpm
The method of interest at the moment is ndssGetScanResults(), excerpt from pastebin below:
Code:
I/System.out( 1972): Method Name: ndssGetScanResults
I/System.out( 1972): Parameter Type = [Lcom.sqn.dcc.ScanResult;
Unlike the WifiManager though, it looks like this one takes an array of this ScanResult class instead of returning a list of networks. Not exactly sure how this works. I used java.lang.reflect.array to create an array of ScanResults and invoked the ndssGetScanResults() method, but I dont appear to be getting anything - even when I'm already connected on wimax! Can anyone please explain how to call this method correctly so that it will return what networks the phone sees?
I've searched these forums for ndssGetScanResults and other methods that seemed applicable, but I haven't found anything that appears to answer this question. Any help would be appreciated. Thanks!
Hey,
I created my own Lauchner and wanted to integrate the radio functions.
Since I didn't find any information on the internet about how the original app addresses the radio module, I reverse engineered the app.
To make it easier for others I decided to start an Android Studio project.
The project is only very basic to show how the radio module is controlled.
I also added an extension to it.
Using the RDS signal and a SQlite database the station name and logo are displayed.
I hope it is helpful to anyone.
I uploaded the project to Github:
-https://github.com/zebbel/MTCD-E_Radio-app
(Sorry I´m not allowed to post links)
Kind regards
David
Great work!
Hey,
I have compiled the CarManager module into a jar file for easier use in Android Studio projects.
To be honest I never tried to understand how it works exactly, because it just works :laugh:
I know that I downloaded the files somewhere on Github, but I have absolutely no idea where.
If the "creator" of the files is here please let me know so I can give him credit.
-https://github.com/zebbel/microntek_CarManager
(I need still more posts to create links )
Thank you very much for your work!
Thanks to your library I realized a widget that reads (and shows) the battery voltage value.
I have a question : do you have a complete list of "type" that can be used ?
In you example you attached to your handler the types:
- Radio
- KeyDown
In my case I used "CarEvent" :
Java:
CarManager carManager = new CarManager();
CarManagerHandler carManagerHander = new CarManagerHandler(this);
carManager.attach(carManagerHander, "CarEvent");
In this way my Handler is receiving all the CarEvents. The voltage is contained in the message tagged as "battery".
There are other types that we can use in order to catch other interesting events?
Thank you,
Salvo