[Q] using preferences - Android Software Development

Whats the easiest way to read/ write preferences. (e.g. I want to store a few int values and recall them later)

hyperbyteX said:
Whats the easiest way to read/ write preferences. (e.g. I want to store a few int values and recall them later)
Click to expand...
Click to collapse
Check out this short tutorial on reading/writing preferences - i found it helpful.
- jc

how exactly do you use the getInt() method? I cant get it to work
EDIT: never mind I got it, THANKS

Related

Tasker Question.

I believe that by using Tasker, we can set up multiple task executions ata set time or situation. I haven't tried it myself but I'm planning to now. I just need some info on how to make it work. Most importantly, if it can do THIS:
LEGEND:
A = An App
B = Titanium Backup
C = Another app
IF - LAUNCH - A - THEN - LAUNCH - B - COMMAND - B - FREEZE - C.
In simple terms, is it possible to have Tasker run Titanium Backup and freeze an app whenever a designated app is launched? Basically, launching a specified app will 'trigger' Titanium Backup to be launched and freeze another app.
I hope I'm not confusing anyone.
Thanks, XDA! I'm so proud to be a part of this community.
It looks like you might be able to. I'm unfamiliar with tasker... But the dev does have something of a user manual on the site. You may want to start there.
http://tasker.dinglisch.net/userguide/en/index.html
Tried tinkering around. Couldn't get anywhere with this. Is there an existing guide somewhere in these forums that I might have missed? Can anyone please point me at the right direction? :'(
Well, I'm fairly new to Tasker myself, but there's no easy "tap, tap, scroll, tap, done" way to do it as far as I can tell. Post #3 here gives a suggested way forward (same question as yours only with a time context instead of an app) but it is quite technical and certainly beyond my understanding at this point.
Otherwise you could ask on the Tasker forum. The developer seems to answer most threads, even if only to say something's not possible.
Can I ask why you need to freeze an app on the fly like that? Maybe if you explain it a little, there could be a workaround.
selection16 said:
Well, I'm fairly new to Tasker myself, but there's no easy "tap, tap, scroll, tap, done" way to do it as far as I can tell. Post #3 here gives a suggested way forward (same question as yours only with a time context instead of an app) but it is quite technical and certainly beyond my understanding at this point.
Otherwise you could ask on the Tasker forum. The developer seems to answer most threads, even if only to say something's not possible.
Can I ask why you need to freeze an app on the fly like that? Maybe if you explain it a little, there could be a workaround.
Click to expand...
Click to collapse
Well I found out that one of my apps doesn't work when the other app is installed or active. I really liked the app in question, so I made an experiment to freeze all apps until I found the culprit. I did found it. That's why I'm trying to check if it can be achieved.
Have you tried just killing the app?
Context: Application > App A
Task: App > Kill App > App C (and most likely check "Use Root")
You may want to add an exit task to restart App C after you're done with App A.
If it works, that would stop it running in the background. The problem is that Android 2.2 and upwards have changes to stop an app being able to kill another app. It's inconsistent though - I've tested it on about 6 apps and it has worked on 2, so it's maybe worth a shot if you haven't tried.
If you or anyone else is still interested, this is easy to do. Just use the Secure Settings plugin, specifically it's Package Manager option, and disable or enable to have the same effect as freeze/unfreeze. TB isn't required.
selection16 said:
If you or anyone else is still interested, this is easy to do. Just use the Secure Settings plugin, specifically it's Package Manager option, and disable or enable to have the same effect as freeze/unfreeze. TB isn't required.
Click to expand...
Click to collapse
Thank you very much!!!
I downloaded the sample tasker app that expires in 7 days from their website and installed it. I can run tasker, enter code and save, and the icon shows it as running when I quit out to test my code. I can't get anything to work using code examples from the wiki for simple items such as action at preset time. I am running CyanogenMod 7.2.0 is this causing my problem?

Accessing second APK?

Hey All -
First, really quick background: I'm a ASP.NET / .NET programmer, and taught myself Java and Android while making the one app I have released (for a hobby of mine) - https://play.google.com/store/apps/details?id=com.tsqmadness.bmmaps
Now, having said that, I'm looking to upgrade my app with a couple features (version 2.0, baby!), and was wondering how to make an 'add on' apk to access from the initial app.
For example (this is one of the several uses I am thinking of for the 'add on'), the easiest one would be -
Main app wants to access an add-on apk to call a function to grind some numbers, and return a result. If that add-on APK's not installed, then the user wouldn't be able to use that function.
The UI stuff I can handle easily, the main purpose of my question here is -
How can I tell if the other 'add on' APK is installed, and
How do I access a function (in a class or some such) in the other APK?
Honestly, I'd google it, but I'm not sure what this process is even called, so my searches have come up pretty sparse.
Thanks guys -
-Mike.
Do you want it to be a feature unlocker? Like a pro version key? For that purpose I'd recommend in-app-purchases because the user doesn't feel limited during download because he's got "just" the free version.
If you want it to execute methods, you could have a look at shared user ids and system broadcasts.
nikwen said:
Do you want it to be a feature unlocker? Like a pro version key? For that purpose I'd recommend in-app-purchases because the user doesn't feel limited during download because he's got "just" the free version.
Click to expand...
Click to collapse
Originally, this WAS a plan. I have switched to in-app purchases for that now, however.
nikwen said:
If you want it to execute methods, you could have a look at shared user ids and system broadcasts.
Click to expand...
Click to collapse
Thanks, that'll give me a starting place to search on. I was thinking a few other reasons for it as well (like, a map marker pack, for a limited basic example..)
Thanks-
Mike.
coyttl said:
Originally, this WAS a plan. I have switched to in-app purchases for that now, however.
Thanks, that'll give me a starting place to search on. I was thinking a few other reasons for it as well (like, a map marker pack, for a limited basic example..)
Thanks-
Mike.
Click to expand...
Click to collapse
Welcome.
The difficult part will be returning a result to the original app.

[Q] How do i get the Time an App is currently Running?

Hallo everbody,
im writing a background service to get informations like the time an active app (not my app) is running.
With this information i can show the user a list of the most used apps depending on the time.
The methods of the ActivityManager-class are useless, because the received informations aren't reliable.
So i thought, because the Android-System is based on a Linux-Kernel, i can use the internal structure to get these informations.
So i read out the pseudo proc-filesystem to get the process informations and for the 2nd time i thought
thats the right place for me to get what i want.
I read out the stat-file in every single process-directory to get the starttime(in clock_ticks) of the process.
I dynamic calculate the HZ USER_HZ value and use it to get the real starttime but this time never changes.
It's more like a timestamp of the first start on the system after boot.
The user-code-time and kernel-code-time seems to be too short and the values are updated too irregular.
So i just got a time value, that tells me the time when the app was first started after system boot
but i want a timestamp or anything else i can get from a currently running app to calculate the time this app is active.
Long life services and background services are not my goal.
Now i'm here because i don't know if i just miscalculate the values from this pseudo filesystem or
if i'm absolutely wrong where i get my informations from.
My Questions:
1. Do i read the wrong values files filesystem (if yes, where can i find these informations in the system structures)
2. Do i misunderstand some of the values i read out
3. Why do the files in the process directories become updated so irregular or once in a lifetime (just if im in the right filesystemfile)
I hope u can help me. *-*
Well, interesting approaches. :good:
The only way I see is running a background service and storing the launch time yourself.
I'm sorry but I don't know the answers to your questions.
You could
a) use su to get the active process list
b) get to /proc/??? folder (where ??? is the apppropriate process you enquire, for example /proc/80/)
c) get the /proc/80/sched text file and look for exec_runtime or vruntime or what ever works for you
carbonpeople said:
You could
a) use su to get the active process list
b) get to /proc/??? folder (where ??? is the apppropriate process you enquire, for example /proc/80/)
c) get the /proc/80/sched text file and look for exec_runtime or vruntime or what ever works for you
Click to expand...
Click to collapse
Oh, getting the currently running tasks can even be done much easier and doesn't require root. This is what I use:
Code:
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfoList = am.getRunningAppProcesses();
carbonpeople said:
You could
a) use su to get the active process list
b) get to /proc/??? folder (where ??? is the apppropriate process you enquire, for example /proc/80/)
c) get the /proc/80/sched text file and look for exec_runtime or vruntime or what ever works for you
Click to expand...
Click to collapse
that seems to be exactly what i need!
but there are the next questions:
what is the unit of the "se.sum_exec_runtime"-field? is it in nano-secs?
what does the point do in the value? does it indicates a floating-point value?
im kinda confused and didnt really find something meaningful about the unit (*-*)
and im not very handy with the kernel code from "lxr.linux.no"
nikwen said:
Oh, getting the currently running tasks can even be done much easier and doesn't require root. This is what I use:
Code:
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfoList = am.getRunningAppProcesses();
Click to expand...
Click to collapse
Following Note can be found in the android-doc:
"this method is only intended for debugging or building a user-facing process management UI."
And the "RunningAppProcessInfo"-class (given by the Method) doesnt provide any infos about the running time of a process.
So i think it's more reliable for me to read out the process-infos directly in the proc-filesystem.
Dalorikai said:
Following Note can be found in the android-doc:
"this method is only intended for debugging or building a user-facing process management UI."
And the "RunningAppProcessInfo"-class (given by the Method) doesnt provide any infos about the running time of a process.
So i think it's more reliable for me to read out the process-infos directly in the proc-filesystem.
Click to expand...
Click to collapse
1) True.
2) That's why I wrote this:
nikwen said:
The only way I see is running a background service and storing the launch time yourself.
Click to expand...
Click to collapse
3) But if the other method works and if you don't care about root rights as a requirement, it might be better. :good:
Dalorikai said:
what is the unit of the "se.sum_exec_runtime"-field? is it in nano-secs?
what does the point do in the value? does it indicates a floating-point value?
im kinda confused and didnt really find something meaningful about the unit (*-*)
and im not very handy with the kernel code from "lxr.linux.no"
Click to expand...
Click to collapse
replying to my own post i think the point in the value of the field indicates the milli-secs.
just an idea - im not sure but would be plausible if the unit is nano-secs.
what do u think or possibly know? ^^

Location and Wifi

I want to build an app that requires me to store and remember locations. I'm not sure if it's possible to remember and distinguish between different Wifi but that would be ideal. I am confused about how to start this and where to go. I read the Android guide on developer.andoird.com. Few question:
1)Firstly when I get the location what do I exactly store/remember?
2)Should I create a database like SQLite to store this information or are there other practices for this sort of work?
Sorry I am very new with Location and Network on Android ... Thanks!
anyone?
AppDevProject said:
anyone?
Click to expand...
Click to collapse
At first you should search and read developer.android.com tutorials and documentation
second- there is several very good tutorials.
And your questions:
1) you can decide what coordinate you want to store (latitude, altitude, longitude, speed, direction, and several others)
2) it's depend of purpose of you app. If you want only log your position, I think at beginning it would be enough to save this data to files (csv file or any other)
If you wish I can send you my example of app which shows your current location
darvark said:
At first you should search and read developer.android.com tutorials and documentation
second- there is several very good tutorials.
And your questions:
1) you can decide what coordinate you want to store (latitude, altitude, longitude, speed, direction, and several others)
2) it's depend of purpose of you app. If you want only log your position, I think at beginning it would be enough to save this data to files (csv file or any other)
If you wish I can send you my example of app which shows your current location
Click to expand...
Click to collapse
If you could please show me an example that would be wonderful!
AppDevProject said:
If you could please show me an example that would be wonderful!
Click to expand...
Click to collapse
Watch this I/O video about the new location api. They tell you how to do it right
AppDevProject said:
If you could please show me an example that would be wonderful!
Click to expand...
Click to collapse
Hi,
Sorry for delay. in attachment you can find sources of my app

Way to store Preferences

Hey Guys,
I am creating a app to rename other apps via xposed and the main code is written. Now I simply want to make a interface where you can define a app to rename and then enter a new name. For the beginning I thought about a Activity where you enter the Package Name and the desired name. Later on I want to use a list view to show all apps, from where you can choose one to rename(Like App Settings etc.). To show the renamed apps I want to use a ListView. Now I am stuck with a problem: My xposed code works with an array to check and rename. The list view can be used with an array or an arraylist, but I need a way to store the preferences(which are stored in a array).
Do you have a good idea or a sample how to realise this? And does somebody know a nice App List type of thing(I googled, but the project there aren't usable with my kind of approach.)
GalaxyInABox said:
Hey Guys,
I am creating a app to rename other apps via xposed and the main code is written. Now I simply want to make a interface where you can define a app to rename and then enter a new name. For the beginning I thought about a Activity where you enter the Package Name and the desired name. Later on I want to use a list view to show all apps, from where you can choose one to rename(Like App Settings etc.). To show the renamed apps I want to use a ListView. Now I am stuck with a problem: My xposed code works with an array to check and rename. The list view can be used with an array or an arraylist, but I need a way to store the preferences(which are stored in a array).
Do you have a good idea or a sample how to realise this? And does somebody know a nice App List type of thing(I googled, but the project there aren't usable with my kind of approach.)
Click to expand...
Click to collapse
Ah the data storage problem... I think we all came across this at least once . I suppose you read this guide on the different options available? Well there are actually three options: SharedPreferences, text or csv file and SQL.
The first one would need some work around and is probably the slowest. You would save a separate string directly into the SharedPreferences (maybe in a new file to avoid collisions?) with the array name and its index somehow in the key. That's just two methods of coding but not the nicest way to do it.
The text or csv file however is the more common way, here you'd save your array in one line of the file, each item separated with a ; or some other char. Needs a bit more coding and also the WRITE_EXTERNAL_STORAGE permission on preKitKat if I remember correctly.
The third one is the nicest and most modular one. Because it makes use of SQL it needs quite a bit of knowledge and some coding (but less than the text file).
I guess for simple things that you want to do it is better to stay away from SQL for now unless you know how to use it and use the SharedPreferences.
Edit: take a look at the answers to this question, they give you the code as well... And you can use StringSets in ICS and above if the order of your list doesn't matter !
I'd say go down the SQLite DB way, chances are that if you plan on expanding your coding knowledge and want to keep creating apps you'll be needing to learn this in the future anyway so why delay?
Google AndroidHive and look at their SQL tutorial - I used it when learning and found it very informative
Sent from my HTCSensation using Tapatalk
Thank you very much! As coming from windows, first of all I thought about SQL as well, but it seems oversized for the set of data i want to store. I also took a look at the stackoverflow thread you linked. It looks easy to implement, but the need to use an external class file made me look for another way. I found this one, which works pretty well for me, as I look forward to interchange the method of saving the data with a better one using the SharedPreferences(which actually should be really easy with my code).
Maybe you can tell me yet another thing: Is there a way of declaring an object(like the ArrayList) to make it accessible from every class except from giving every class(activity) it's own "load the preferences" and "save the preferences" code block or sending intents all over the place? This would make saving much easier and allow me to update the preferences during runtime and without a reboot
Edit: This was my answer to.SimplicityApks ^^ I'll take a closer look at SQL now, since you, Jonny, told me that it' nevertheless necessary.
GalaxyInABox said:
Thank you very much! As coming from windows, first of all I thought about SQL as well, but it seems oversized for the set of data i want to store. I also took a look at the stackoverflow thread you linked. It looks easy to implement, but the need to use an external class file made me look for another way. I found this one, which works pretty well for me, as I look forward to interchange the method of saving the data with a better one using the SharedPreferences(which actually should be really easy with my code).
Maybe you can tell me yet another thing: Is there a way of declaring an object(like the ArrayList) to make it accessible from every class except from giving every class(activity) it's own "load the preferences" and "save the preferences" code block or sending intents all over the place? This would make saving much easier and allow me to update the preferences during runtime and without a reboot
Edit: This was my answer to.SimplicityApks ^^ I'll take a closer look at SQL now, since you, Jonny, told me that it' nevertheless necessary.
Click to expand...
Click to collapse
Welcome
You mean you want to make your ArrayList, which is an instance variable in the activity, accessible to every other class within your package without having an instance of your activity at hands? Well the basic solution would be to make the ArrayList static. But that is not recommended because it won't be created and garbage collected at the same time as your activity and also it's not a nice way .
If you had an instance of the activity it would be just using a public getter for it, but without I'd put your ArrayList into a separate class following the Singleton pattern. That way you have only one global instance which contains the ArrayList.
Thanks again for your reply! I changed my mind about the ArrayList and created a method, where everything is stored in the SharedPreferences and the ArrayList's only purpose is the use with the ListView and Adapter. This way I don't have to write the ArrayList to the SharedPreferences and changes will be much easier to control. Although I had to implement another type of save/load method to interact with the class thats being loaded by xposed. That was needed because of the restriction that you can only load SharedPreferences with a context, which my class doesn't have. It's an inconvenient way, but it works

Categories

Resources