Need help making some changes in system files... - General Questions and Answers

While trying to learn most of my tablet...especially when it comes to performance (i am a "power" user) i stumbled upon a few things i am curious about...
I will ask a few questions...hopefully someone will answer
1. What is framework.jar?? If i modify something in it...do i have to modify some other files too...to make sure its applied?
2. Where can i find this "ActivityManager" something? (On my opinion its like a API code)? I wanna modify something in it...hopefully to get some speed
3. About this code "ro.config=low_ram" on some devices thats how the code looks like...but in some cases...especially when about to be forcibly enabled they put "ro.config=low_ram.mod" instead...why so? And what is .mod? Will the code still have effects if it has this ".mod"?
4. Does a command in build.prop really need that "# blablabla" something? For what purposes?
For example:
#NFC
debug.nfc.fw_download=false
debug.nfc.se=false
That "#NFC" is it needed?
5. What is local.prop? Does it have any relation with build.prop?
Thanks for reading...hope someone will be able to answer this questions...thanks in advance

Almost all posts here gets unanswered...dem :crying:

Q.What is framework.jar?? If i modify something in it...do i have to modify some other files too...to make sure its applied?
A.Framework.jar is an important file,with this file you can theme your device,decompile it and edit the .png file in it,this is what tells your device what is the apprioriate drawable to use whether it is a LDPI,MDPI and all sorts of thing,this is like the ui manager for the phone
Q.Where can i find this "ActivityManager" something? (On my opinion its like a API code)? I wanna modify something in it...hopefully to get some speed
A.This is an api,its job is to manage app ram uses,what speed frequency need to be set for the app to be launched,everything that requires the app to launch.
Q.About this code "ro.config=low_ram" on some devices thats how the code looks like...but in some cases...especially when about to be forcibly enabled they put "ro.config=low_ram.mod" instead...why so? And what is .mod? Will the code still have effects if it has this ".mod"?
A.yes,the code still have effects on the devices, the ".mod" thing is used notify the system to use it,the original one will still intact in the build.prop if something goes wrong
Q.Does a command in build.prop really need that "# blablabla" something? For what purposes?
For example:
#NFC
debug.nfc.fw_download=false
debug.nfc.se=false
That "#NFC" is it needed?#NFC
A.this "#" thing basically found in the build.prop,its function is to specified for a certain function,
Example,i want to specified that this is for NFC properties
Im gonna put
#NFC
debug.nfc.fw_download=false
debug.nfc.se=false
it basically help you to specified what it the function is
this gonna be helpful if you want to edit it using build.prop editor
Q.What is local.prop? Does it have any relation with build.prop?
A.yes,its basically for your device properties and merged with the build.prop to be editable
hope this is enough to explain what you currently dont know about your device :good:

kinghamster678 said:
While trying to learn most of my tablet...especially when it comes to performance (i am a "power" user) i stumbled upon a few things i am curious about...
I will ask a few questions...hopefully someone will answer
1. What is framework.jar?? If i modify something in it...do i have to modify some other files too...to make sure its applied?
2. Where can i find this "ActivityManager" something? (On my opinion its like a API code)? I wanna modify something in it...hopefully to get some speed
3. About this code "ro.config=low_ram" on some devices thats how the code looks like...but in some cases...especially when about to be forcibly enabled they put "ro.config=low_ram.mod" instead...why so? And what is .mod? Will the code still have effects if it has this ".mod"?
4. Does a command in build.prop really need that "# blablabla" something? For what purposes?
For example:
#NFC
debug.nfc.fw_download=false
debug.nfc.se=false
That "#NFC" is it needed?
5. What is local.prop? Does it have any relation with build.prop?
Thanks for reading...hope someone will be able to answer this questions...thanks in advance
Click to expand...
Click to collapse
Simply any quote starting with # is not read by android
It is basically used to mark comments

Thunderoar said:
Q.What is framework.jar?? If i modify something in it...do i have to modify some other files too...to make sure its applied?
A.Framework.jar is an important file,with this file you can theme your device,decompile it and edit the .png file in it,this is what tells your device what is the apprioriate drawable to use whether it is a LDPI,MDPI and all sorts of thing,this is like the ui manager for the phone
Q.Where can i find this "ActivityManager" something? (On my opinion its like a API code)? I wanna modify something in it...hopefully to get some speed
A.This is an api,its job is to manage app ram uses,what speed frequency need to be set for the app to be launched,everything that requires the app to launch.
Q.About this code "ro.config=low_ram" on some devices thats how the code looks like...but in some cases...especially when about to be forcibly enabled they put "ro.config=low_ram.mod" instead...why so? And what is .mod? Will the code still have effects if it has this ".mod"?
A.yes,the code still have effects on the devices, the ".mod" thing is used notify the system to use it,the original one will still intact in the build.prop if something goes wrong
Q.Does a command in build.prop really need that "# blablabla" something? For what purposes?
For example:
#NFC
debug.nfc.fw_download=false
debug.nfc.se=false
That "#NFC" is it needed?#NFC
A.this "#" thing basically found in the build.prop,its function is to specified for a certain function,
Example,i want to specified that this is for NFC properties
Im gonna put
#NFC
debug.nfc.fw_download=false
debug.nfc.se=false
it basically help you to specified what it the function is
this gonna be helpful if you want to edit it using build.prop editor
Q.What is local.prop? Does it have any relation with build.prop?
A.yes,its basically for your device properties and merged with the build.prop to be editable
hope this is enough to explain what you currently dont know about your device :good:
Click to expand...
Click to collapse
Ty for the time and reply sir!
Now i know what to do hehe, ty again

you're welcome

Related

Creating/Modifying an Android Build

Hey all,
I am a UK vodafone customer, using an ADP G1. I currently use the JF 1.5 ADP build, and I am mostly happy with it, apart from a few things.
What I would like to do, is take the ZIP of the build and remove/tweak a few things where possible. As an example, change the dial string to be UK, add a few of my favorite apps/widgets, remove any apps I don't use etc. Nothing major.
Is it simple to do this, as I have read a lot about signing stuff and I am honestly quite confused. I am not stupid when it comes to software, but I just cant find a single resource of information to help me do what I want to do.
Could anyone offer some advice on how to go about the above, and if its easy enough then maybe we could sticky it.
Sorry if I am asking an FAQ - I did search and couldn't find anything helpful.
Rich
I'm interested in this too, but I'd base mine on the european holiday phone build which I'm currently running unmodified
if you unpack the update.zip you can change whatever you like. Then all you need to do is to zip it backup and sign it with instructions in this post.
http://forum.xda-developers.com/showthread.php?t=443713&page=21
I don't know what dial string you are refering to so I don't know about that. If you want to change specific things in the apps or appearance, then it can get complicated, you'll need to open up the apk file and use an hex editor to figure out what you want to change and change it. This is of course not so easily because most of the values that you want to change is in binary so just figuring out what string is store where is not simple.
signing is just to make sure the update.zip is not modified by a third party. we have to sign because the program that does the update verifies the signiture.
but unless you want to publish your builds, it's not necessary to modify the update.zip. just remount the system partition after the flash and do whatever changes you like.
i am afraid you have to get the source code for the phone app if you want to change the number format, but a simpler alternative is to use similar files from other builds. (there are plenty of posts explaining this.)
if you want to modify some resources (e.g. icons) of the an app, it's easy enough to do. just change the .apk extension to .zip and update the files using some archiever. but changing the UI or program function usually requires you to obtain the source code.
The phone number format contains '-' in america but not in europe. The nearest we have to the adp firmware in europe is the holiday firmware where the dailer has the correct format.
What I really want to do is add back in root so I can setup my work wifi. I think I should be able to do it so I may have a go this weekend.

Stagefright/Streaming Audio Fix Scripts to Enable/Disable on the Go

First, I take absolutely no credit for this beyond bringing this to the Evo forums' attention. And, I take absolutely no responsibility for whatever happens to your phone, period, ever.
As you probably know already, when you move up to 2.2, your Pandora streaming will likely take an audio quality hit due to the stagefright encoding introduced in 2.2. The fix is to disable stagefright in your build.prop. Unfortunately, disabling stagefright permanently introduces other issues. glitzbd over in the Nexus Forum posted this method the other day in order to enable/disable stagefright on the fly.
"I just did this on MCR21 (FRF91) and what a difference! Here is what I did!
I downloaded GScript Light (buying the pay version ASAP haha)
Opened the program and ran the CPU script to give it SU
In the program hit the menu button and then add script
I put the following in:
Name: Enable
Needs SU?: Check
setprop media.stagefright.enable-player true
Save
Name: Disable
Needs SU?: Check
setprop media.stagefright.enable-player false
Save
Now go to your launcher and long press to add a shortcut, and then scroll down the GScript and it will bring up a list of all of your scripts, put both of those on the homescreen!
For convenience I will attach the scripts just in case you don't want to bother with it haha
I am not positive on how to add them, but I think you can just unzip them, and place them on your SD card and when you go to add script then hit Load File
Enjoy!"
and per beagz in the Nexus Forum
"Thanks for posting those. I was just about to do that myself. Great job.
Make sure you place them in the gscript folder on the sdcard.
Also long press on homescreen --> shortcuts --> gscript
then select which script you want to have a link to. Then you can just press the icon for enable or disable."
Link to scripts: http://forum.xda-developers.com/attachment.php?attachmentid=372654&d=1280871021
Now seeing as I don't have the skills for this, should anyone have the skills and would like to help, having a widget for this would be extremely helpful.
Thoughts?
MSmith1 said:
First, I take absolutely no credit for this beyond bringing this to the Evo forums' attention. And, I take absolutely no responsibility for whatever happens to your phone, period, ever.
As you probably know already, when you move up to 2.2, your Pandora streaming will likely take an audio quality hit due to the stagefright encoding introduced in 2.2. The fix is to disable stagefright in your build.prop. Unfortunately, disabling stagefright permanently introduces other issues. glitzbd over in the Nexus Forum posted this method the other day in order to enable/disable stagefright on the fly.
"I just did this on MCR21 (FRF91) and what a difference! Here is what I did!
I downloaded GScript Light (buying the pay version ASAP haha)
Opened the program and ran the CPU script to give it SU
In the program hit the menu button and then add script
I put the following in:
Name: Enable
Needs SU?: Check
setprop media.stagefright.enable-player true
Save
Name: Disable
Needs SU?: Check
setprop media.stagefright.enable-player false
Save
Now go to your launcher and long press to add a shortcut, and then scroll down the GScript and it will bring up a list of all of your scripts, put both of those on the homescreen!
For convenience I will attach the scripts just in case you don't want to bother with it haha
I am not positive on how to add them, but I think you can just unzip them, and place them on your SD card and when you go to add script then hit Load File
Enjoy!"
and per beagz in the Nexus Forum
"Thanks for posting those. I was just about to do that myself. Great job.
Make sure you place them in the gscript folder on the sdcard.
Also long press on homescreen --> shortcuts --> gscript
then select which script you want to have a link to. Then you can just press the icon for enable or disable."
Link to scripts: http://forum.xda-developers.com/attachment.php?attachmentid=372654&d=1280871021
Now seeing as I don't have the skills for this, should anyone have the skills and would like to help, having a widget for this would be extremely helpful.
Thoughts?
Click to expand...
Click to collapse
Isn't that kinda what you just did, set up an enable and disable widget?
To contribute, however, you could use tasker to create a desktop widget that brought up a menu with two options of disable and enable, and you could click each of those to perform the action.
I've only been using tasker for a week, but it's pretty awesome IMO. I have already created lots of custom stuff. For example, when I plug in my headphones, it sets my volume and opens Pandora.
Anyway, could be an option without having to do coding.
You mentioned that it caused other problems, can you share what those are? I've since changed my build prop too, so I guess I've got whatever those problems are. :/
I tried this...but the problems I encountered was with streaming radio apps such as RadioTime, Yahoo Music and WunderRadio). In my experience, when you switch to false they refuse to connect and stream.
I read in another forum someone wrote Pandora about their sound issues with Froyo. They acknowledged the issue and stated they'll be making changes in their next release. Of course, they didn't state when the next release will be.
Vegasden said:
I tried this...but the problems I encountered was with streaming radio apps such as RadioTime, Yahoo Music and WunderRadio). In my experience, when you switch to false they refuse to connect and stream.
I read in another forum someone wrote Pandora about their sound issues with Froyo. They acknowledged the issue and stated they'll be making changes in their next release. Of course, they didn't state when the next release will be.
Click to expand...
Click to collapse
then you actually havent tried this.
MSmith1 said:
First, I take absolutely no credit for this beyond bringing this to the Evo forums' attention. And, I take absolutely no responsibility for whatever happens to your phone, period, ever.
As you probably know already, when you move up to 2.2, your Pandora streaming will likely take an audio quality hit due to the stagefright encoding introduced in 2.2. The fix is to disable stagefright in your build.prop. Unfortunately, disabling stagefright permanently introduces other issues. glitzbd over in the Nexus Forum posted this method the other day in order to enable/disable stagefright on the fly.
"I just did this on MCR21 (FRF91) and what a difference! Here is what I did!
I downloaded GScript Light (buying the pay version ASAP haha)
Opened the program and ran the CPU script to give it SU
In the program hit the menu button and then add script
I put the following in:
Name: Enable
Needs SU?: Check
setprop media.stagefright.enable-player true
Save
Name: Disable
Needs SU?: Check
setprop media.stagefright.enable-player false
Save
Now go to your launcher and long press to add a shortcut, and then scroll down the GScript and it will bring up a list of all of your scripts, put both of those on the homescreen!
For convenience I will attach the scripts just in case you don't want to bother with it haha
I am not positive on how to add them, but I think you can just unzip them, and place them on your SD card and when you go to add script then hit Load File
Enjoy!"
and per beagz in the Nexus Forum
"Thanks for posting those. I was just about to do that myself. Great job.
Make sure you place them in the gscript folder on the sdcard.
Also long press on homescreen --> shortcuts --> gscript
then select which script you want to have a link to. Then you can just press the icon for enable or disable."
Link to scripts: http://forum.xda-developers.com/attachment.php?attachmentid=372654&d=1280871021
Now seeing as I don't have the skills for this, should anyone have the skills and would like to help, having a widget for this would be extremely helpful.
Thoughts?
Click to expand...
Click to collapse
I've been having streaming issues with Last.FM and Pandora. I'll give this a whirl and let you guys know how it goes. Thanks for the tip though, much appreciated!
I tried adding the scripts, but it seems that the build.prop file does not get updated no matter what I do.. there are no errors when running the script and it even confirms that it ran, but the value doesn't change...
Edit: I ran Quadrant to make sure the scripts worked and yes, they do affect my scores so it looks like it's changing as it should. Thanks again, hopefully it fixes my audio issues.
Edit2: Seems to have fixed my Last.FM, thanks a bunch!
I can confirm these scripts are working for me as well. Streaming radio stations without stagefright player enabled caused the same problems so these scripts allow me to get around this relatively easily. BTW, to the above user, these scripts are adb shell commands and will not modify the build.prop.
Question: Is there a way to open an app with a shell command? I would like to set the property to the appropriate value and proceed to open the streaming app afterward. So I would have a slacker script that would disable stagefright and start slacker, etc. Thanks!
jedil1c1ous said:
Question: Is there a way to open an app with a shell command? I would like to set the property to the appropriate value and proceed to open the streaming app afterward. So I would have a slacker script that would disable stagefright and start slacker, etc. Thanks!
Click to expand...
Click to collapse
Maybe tasker can do this? I'm not sure though.
jedil1c1ous said:
I can confirm these scripts are working for me as well. Streaming radio stations without stagefright player enabled caused the same problems so these scripts allow me to get around this relatively easily. BTW, to the above user, these scripts are adb shell commands and will not modify the build.prop.
Question: Is there a way to open an app with a shell command? I would like to set the property to the appropriate value and proceed to open the streaming app afterward. So I would have a slacker script that would disable stagefright and start slacker, etc. Thanks!
Click to expand...
Click to collapse
Another plug for tasker, it is able to run ASE (Android Scripting Environment 2.0+) scripts, so maybe we could make it work there.
Running shell commands in an app is more difficult than it sounds. I tried to do it a while back with a test app I was writing, and it doesn't really translate too well with the Android API. I'm sure there is a fairly good way to do it by leveraging an outside java api, but I didn't have a ton of luck.
Here's a link to the ASE (now known as SL4) google code page:
http://code.google.com/p/android-scripting/
MSmith1 said:
Maybe tasker can do this? I'm not sure though.
Click to expand...
Click to collapse
It looks like this is on his todo list for Tasker. From his website:
rooted phone: become root/user, Run Shell Script (bash, no ASE needed), Reboot, toggle background data,key events and injection
Thanks for this. Before, I either just pulled the build.prop file and edited it there, making it permanant, but then everytime I flashed a CM6 Nightly it would go away And then I would always manually type it in on Terminal Emulator, which would be a pain, because after restart, I would have to redo it!
Now, thanks to this, I can disable/enable very quickly, and should be able to keep these scripts when I flash the CM6 Nightlies
Glad I could bring this to everyone's attention.

android_id script

For various reasons I need to change the android_id from time to time and to keep things nice and tighty, I always backup any settings before hand and restore to my original settings (android_id) when done. I wanted to have everything in one little package because plugging the commands in a terminal on the phone is not fun when the SDK is not available.
I could not find a solution for this so for simplicity, I wrote a quick bash script and decided to alter to make it more user friendly in case someone else has the need.
By default it will backup your settings.db (android_id location), generate a random letter/number 16 characters long and update the existing settings.db. You can edit the script to specific paths and even if you would like use your own hex code instead of a randomly generated one.
Anyways, from the terminal/adb this can be executed with 'sh android_id.sh'
Note: I used an array to generate the random hex. you may need to follow the steps here to obtain bash on your phone: http://forum.xda-developers.com/showthread.php?t=537827
can you explain a bit more abt the script? why is it needed to change the android_id?
nicandris said:
can you explain a bit more abt the script? why is it needed to change the android_id?
Click to expand...
Click to collapse
It's nothing too complicated..
the script provides a prompt with 3 options, backup, update and restore.
Backup does just that - it checks if the specified directory exists and if so, copies it to that location creating a backup of the original.
update checks for the settings.db in the backup location, generates a 16 character random number/letter string, updates the settings.db via sqlite and reboots the phone. Once your phone is rebooted, the randomly generated string is now your android id.
Restore deletes the altered settings.db and copies the original so the specified location reverting your phone back to it's original settings. This may or may not be necessary for some people....I'm just anal.
Why change the android_id?
I'm no stranger to Linux but am rather new to the droid. However, from what I read everybody has a unique android_id. Some apps will check the id when you register and won't allow you to register again (some games for example). Also, there are some roms will install a generic android id that multiple users may share. This can be problematic for certain apps that require a unique ID.
paxx- said:
Why change the android_id?
I'm no stranger to Linux but am rather new to the droid. However, from what I read everybody has a unique android_id. Some apps will check the id when you register and won't allow you to register again (some games for example). Also, there are some roms will install a generic android id that multiple users may share. This can be problematic for certain apps that require a unique ID.
Click to expand...
Click to collapse
thanx for the heads up! will have this on mind
Digging Deeper
paxx- said:
By default it will backup your settings.db (android_id location), generate a random letter/number 16 characters long and update the existing settings.db. You can edit the script to specific paths and even if you would like use your own hex code instead of a randomly generated one.
Anyways, from the terminal/adb this can be executed with 'sh android_id.sh'
Note: I used an array to generate the random hex. you may need to follow the steps here to obtain bash on your phone: http://forum.xda-developers.com/showthread.php?t=537827
Click to expand...
Click to collapse
I know this is an old post, But id like to know if this .sh can be added to a ROM and run after each ROM restore. The purpose is to use the same CWM backup, but during the restore process create unique android_id's.
I need to duplicate this on over 4500 devices. Pantech Element Tablet to be specific.

[TOOL] ApkSpy v1.8 - Resurrected (APK: view manifest on PC and/or Install APK via PC)

APKSPY - RESURRECTED​
First:
I want to thank @ido for the original application -- It was his idea (and his code I've hacked :cyclops and modified.
Second:
Since Ido seems not to be active anymore I'll re-publish the application here.
Unless for some reason Ido will specifically ask me to remove it.
The original post
ido said:
ApkSpy is a simple tool I hacked up tonight which allows you to easily view the manifest of an APK (screenshots attached - not up to date though) just by double clicking it. (It can even associate with the .apk filetype, yay!)
ApkSpy relies on the aapt.exe tool from the android SDK, so you must have that installed (or just copy aapt.exe from somewhere, that's the only file needed to run ApkSpy).
Click to expand...
Click to collapse
Third:
Requires Microsoft©® .Net Framework v4
(Kind of since I've done it some time ago and waited for Ido [the orignal developer] to respond and allow or disallow me to re-publish... So, I don't remember all the changes I've already done...)
v1.8.19 CHANGELOG:
Fixed some Date parsing function (zipped file with no time stamp) in ZipStorer (by @Jaime Olivares) maybe causing some of the error reported here...
v1.8 CHANGELOG:
Changed Icon - CONTRIBUTED BY @Jarmezrocks
Removed unneeded tabs (System, Batch Rename, Log)
Minimize / Maximized restored back
v1.7 CHANGELOG:
(Actually 4.1.7.870, but the first and the last parts are internally used :fingers-crossed:)
Try to automatically find adb.exe and aapt.exe in ApkSPY directory or in PATH variable: If failed finding any of the executables, the user is asked to manually locate them
(★ Currently the location is not saved... ★).
Check if the ADB server is running and Start or ask if to Restart ADB server
Tidy up the code
Refining the original libraries written by Ido related to ADB and AAPT
Some more minor code updates
Revised most of the "General" tab (other tabs ware not touched) of the UI:
Grouped and ordered controls on form
Added DropDown of devices attached (★ Not automatically updating upon plugging... ★)
Added some control over ADB actions
Added status bar that some other details are shown, e.g. device type (Nexus, I9100...), OS version (4.1.2, 4.4.2...) and OS build (KOT49H, KVT49L...)
Added (nice looking) information panel with clickable links (for actions on the form) and coloring
Other changes (I can't recall right now, since I've done it some time ago and waited for a response from Ido for permission to republish)
(★ Maybe I'll add an option for this later, depending on my -- not to much -- free time and requested by users .... ★)
Known bugs:
Sometimes ADB fails to return build.prop property for the status bar (however it has not caused any critical problem, so (I think) it can be safely ignored) -- haven't been able (yet) to find the exact state it is happening
Please take the time to look at the application ABOUT tab
Any Other ideas are welcome!
If you like it, Don't forget to Thank me
If you enjoy using this application as much as I have enjoyed re-writing it
please donate to show your appreciation​
RESERVED
Nice
Sent from my SM-N900T using Tapatalk
Good news
Bug report, every time I open this program, this dialog pops up, after click OK, this program works well.
PS, aapt.exe is in the same dir with ApkSpy
I got this errors:
1:
2:
Error in property: [email protected]@usrdata
cmlx said:
Good news
Bug report, every time I open this program, this dialog pops up, after click OK, this program works well.
PS, aapt.exe is in the same dir with ApkSpy
Click to expand...
Click to collapse
Hey dude,
I am not sure what you are doing wrong on your PC but it's certainly not the app as it works perfectly fine on my computer? Out of interest and for the sake or helping the new dev I thought I would raise a few points just to eliminate any finger pointing. There's a wishy-washy area when it comes to building/hacking things that were originally someone elses work...so yeah one can easily make great improvements yet open the door to bugs at the same time too. Anyway...thought I'd ask this:
Does aapt sit on your path? I know you said it is in the same directory, however just like a batch script in Windows it needs to "CD" or change directories to the %~dp0 if it is to understand what an executable is that happens to be sitting in the same directory as it's self. So this is is kinda directed at the new dev now. What I think is happening is that aapt is assumed to be in the system path when quite often it is not (i.e. those on XDA who have not yet played with the Android SDK properly). Put simply unless the application knows it is in the same directory as your executable it won't at all understand what aapt is. Does that make sense?
@dmagician , I would make sure that the apkspy app can do a check (even if it is a string search for the first few lines returned from aapt.exe), a simple if statement before throwing that error ....actually it would likely be an 'if not' statement. I don't have any of the code in front of me atm but I can help you out if you like? I was hacking this app myself sometime ago when ido first released it just using reshacker.
Note: If you are stuck and don't have source code you technically could write a full AutoIT wrapper for this app that could do all the checks and more and then bundle everything up into the one exe still. Check out the newer WinAPI stuff for AutoIT and in particular "Run binary" (yes that's correct you can just about run anything repackaged now and not need to deploy the original exe's or even libraries....they can all be stream fed to AutoIT @Compile time and need not be typically "installed" like you used to have to do. Anyway...I am waffling on shoot me a PM man.
@cmlx, to overcome your ApkSpy woes, and until dmagician can put his finger on what the cause is or what ido did when building it ages ago.....then you will firstly need to be patient (props to dmagician to figuring sh!t out so far) but till then where ever you have dumped the ApkSpy and aapt.exe on your system; just copy the address and put it on your system path. To do this 1) right click on My Computer or Computer if you are on Win 7 or 8. 2) Choose properties. 3) Advanced System settings and then at the bottom of tab you will see 'Environment Variables', click it and you will see some "User" and "System" options. Depending on your User access rights on the system you are running on (hopefully you are running as Admin surely?) then you can choose to edit your main system path or create a new variable in your user settings called 'path' Note User variables are always postfix to system variables but should always work anyhow.
Disclaimer: cmlx, if however you have already got an aapt.exe already existing on your system path but it is dodgy then you have to ensure that the good aapt.exe in your app directory is placed on path BEFORE the dodgy one....just sayin. Cause your system searches till it finds what it wants and then doesn't search anymore. Simple but can stuff people up quite often....and likely your case. Nowdays we tend to work from the known application location and not from a "Global environment path" when we know that there are going to be conflicts...and I can assure you that aapt is possibly the worst and most modified binary out there LOL. Hence this is also a note to the dev to ensure that ApkSpy reads from the current directory.....or like I am suggesting, wrap aapt up in the main application as well and that way there is no confusion EVER.
And I am done.....
Oh wait no I am not....sorry bug reports LOL :good: you thought I was all praise eh? Got another thing coming man
OK....so um the red boxes should explain everything. A picture says a thousand words (and yeah I needed at least 1 picture for this god damned long arsed post - sry). Um why in gods name would you remove the minimise and expand buttons? WTF? Anyway...it works but errrm yeah it doesn't wrap the text anymore? and it cuts the words off lol.
Other than that....I only really have one suggestion and it isn't even really a suggestion as I have kind of already made it so I can just give it to you if you want it? And that is that most people (well I can't say most as I am not speaking for everyone) tend not to like how apps take over their system. This isn't your fault at all in anyway as the first dev thought it was a good idea back then.....and back then hardly anything in Windows knew what a freakin apk was so it was a GOOD thing.....However now, every man and his dog wants to steel .apk extension for himself. I myself tend to be all over the shop with apks so I tend not to want to have any particular Windows app take it away from my control. I use WinZip as the main app for simple double click open as I want to see the contents of apks without needing to decompile them (great for theming) however I have apk shell extensions displaying the apks main icon to explorer, so if I set WinZip as default I get a nice lumping hunk of gold turd/box running rampet all over my Windoze bro ......so if you like I can show you my code that allows me to have default apps for specific tasks without interfering with anyones existing sh!t It looks neat too as you can right click any apk and just choose from a dropdown list what particular app you want at the time. If one has the need to use more apps then they need only put those apps in a list. There is nothing worse than double clicking an apk to find that Bluestacks or some other rubbish Windoze crApp has taken offf with your apk.
Lastly I thought I'd ask, Why no config file? Why store everything in memory? I know it's only small....but seeking for things everytime it is executed is a pain in the arse and not good practice. At the very least if you have no idea how to make an exe totally portable then you could reference a config file in the same directory....Or do as most do and write entries to the registry all neat and tucked away. If we get paranoid about "portable-ness" then we write to temporary space in the registry and make sure we clean up upon closing and/or inspect at runtime. simple!
I have plenty of AutoIT scripts that do exactly that too, so if you are stuck for ideas let me know. Anyway I have rambled enough, good luck and I will keep reporting bugs haha
Edit: That's waaaay too many emoticons. Oooops someone is a little high aren't they?
PS: I have attached my PNG of the icon I used for this bugger waaaaaay back....it's less generic and feel free to take it and abuse it and do as you please.
cmlx said:
Good news
Bug report, every time I open this program, this dialog pops up, after click OK, this program works well.
PS, aapt.exe is in the same dir with ApkSpy
Click to expand...
Click to collapse
Yes, I know of this one (and I've specifically wrote about it in the OP), it is NOT related to AAPT executable but to the way ADB is acting (sorry, out of my hands... :angel:
Explanation
The error comes from the application when trying to query the "ro.build.id" property via adb ('ADB shell getprop "ro.build.id" ') command.
I've came across this one but cannot determine the exact situation it is happening (as it can occur when first launching of the app, but after the app is loaded, clicking on refresh does not show this error)...
[ I've tried it on with the (only) two devices I own (1st dev. is stock (only the kernel is changed) 4.4.2 Nexus 4, 2nd dev. is S2-i9100 with customized RR ROM)and it seems to happen ONLY on the S2...]
It looks that in times, the getprop is being executed before the whole "build.prop" is being processed by ADB (This one I cannot control since it is happening on the ADB shell side [running on the device] -- unless MAYBE doing some [UGLY] delay after first initialization of ADB, which is, by far NOT best practice of process handling according to the literature)...
CyberianIce said:
I got this errors:
1:
2:
Error in property: [email protected]@usrdata
Click to expand...
Click to collapse
Which came first, the "SpkSpy spy stopped working" or the "Error in property" (if anyways related)?
Was it on the same run or two different runs?
As of the 1st one:
I do not have enough information from your post to check it up...
I'll post a new version which shows the exception details
As of the 2nd one:
Can you send me a copy of your /system/build.prop (so i'll be able to dig trough it and check it)?
It looks like my name-value splitter character exist as part of a given value in your build.prop .
Wooow, Long one! But it is nice to know people are using (trying) it!
Jarmezrocks said:
Hey dude,
I am not sure what you are doing wrong on your PC but it's certainly not the app as it works perfectly fine on my computer? Out of interest and for the sake or helping the new dev I thought I would raise a few points just to eliminate any finger pointing. There's a wishy-washy area when it comes to building/hacking things that were originally someone elses work...so yeah one can easily make great improvements yet open the door to bugs at the same time too. Anyway...thought I'd ask this:
Does aapt sit on your path? I know you said it is in the same directory, however just like a batch script in Windows it needs to "CD" or change directories to the %~dp0 if it is to understand what an executable is that happens to be sitting in the same directory as it's self. So this is is kinda directed at the new dev now. What I think is happening is that aapt is assumed to be in the system path when quite often it is not (i.e. those on XDA who have not yet played with the Android SDK properly). Put simply unless the application knows it is in the same directory as your executable it won't at all understand what aapt is. Does that make sense?
Click to expand...
Click to collapse
Hi
As I've replied to @clmx, This error is not related to AAPT (either executable [location or whatever] or results), but to the ADB command being used...
Jarmezrocks said:
@dmagician , I would make sure that the apkspy app can do a check (even if it is a string search for the first few lines returned from aapt.exe), a simple if statement before throwing that error ....actually it would likely be an 'if not' statement. I don't have any of the code in front of me atm but I can help you out if you like? I was hacking this app myself sometime ago when ido first released it just using reshacker.
Click to expand...
Click to collapse
Sorry I did not understand... Check for what?
Jarmezrocks said:
Note: If you are stuck and don't have source code you technically could write a full AutoIT wrapper for this app that could do all the checks and more and then bundle everything up into the one exe still. Check out the newer WinAPI stuff for AutoIT and in particular "Run binary" (yes that's correct you can just about run anything repackaged now and not need to deploy the original exe's or even libraries....they can all be stream fed to AutoIT @Compile time and need not be typically "installed" like you used to have to do. Anyway...I am waffling on shoot me a PM man.
Click to expand...
Click to collapse
I do not need the Auto-IT to wrap these files (although I am using it for other automation in windows), as I can do it right in the C# code (on one of my early versions these files was embedded...)
BTW, I know there are some antiviruses out in the wild that do not like the embedded executables -- but it can be done -- and probably will save some time to anyone using this app...
If it will be required / asked, I'll embed the 4 binaries (AAPT.EXE, ADB.EXE, and two DLL's AdbWinApi.dll and AdbWinUsbApi.dll [I'm not sure both are required]) needed by the application.
Jarmezrocks said:
@cmlx, to overcome your ApkSpy woes, and until dmagician can put his finger on what the cause is or what ido did when building it ages ago.....then you will firstly need to be patient (props to dmagician to figuring sh!t out so far) but till then where ever you have dumped the ApkSpy and aapt.exe on your system; just copy the address and put it on your system path. To do this 1) right click on My Computer or Computer if you are on Win 7 or 8. 2) Choose properties. 3) Advanced System settings and then at the bottom of tab you will see 'Environment Variables', click it and you will see some "User" and "System" options. Depending on your User access rights on the system you are running on (hopefully you are running as Admin surely?) then you can choose to edit your main system path or create a new variable in your user settings called 'path' Note User variables are always postfix to system variables but should always work anyhow.
Disclaimer: cmlx, if however you have already got an aapt.exe already existing on your system path but it is dodgy then you have to ensure that the good aapt.exe in your app directory is placed on path BEFORE the dodgy one....just sayin. Cause your system searches till it finds what it wants and then doesn't search anymore. Simple but can stuff people up quite often....and likely your case. Nowdays we tend to work from the known application location and not from a "Global environment path" when we know that there are going to be conflicts...and I can assure you that aapt is possibly the worst and most modified binary out there LOL. Hence this is also a note to the dev to ensure that ApkSpy reads from the current directory.....or like I am suggesting, wrap aapt up in the main application as well and that way there is no confusion EVER.
Click to expand...
Click to collapse
The application IS searching for AAPT and ADB executables; The order is
Application directory (where ApkSpy.exe resides)
PATH environment variable
Jarmezrocks said:
OK....so um the red boxes should explain everything. A picture says a thousand words (and yeah I needed at least 1 picture for this god damned long arsed post - sry). Um why in gods name would you remove the minimise and expand buttons? WTF?
Click to expand...
Click to collapse
Mostly I like it this way, otherwise - No specific reason...
It will be back in the next version...
Jarmezrocks said:
Anyway... it works but errrm yeah it doesn't wrap the text anymore? and it cuts the words off lol.
Click to expand...
Click to collapse
This Tab was NOT changed by me in any way... To be honest, I've thought of removing it completely -- But -- out of respect to Ido's work -- I've left it in.
I assume it is not wrapping due to Font size changed by me globally...
I'm seriously giving it second thoughts -- if it should stay at all (It was originally meant for batch rename of multiple APK's... I haven't used it even once...)...
I'm Really, REALLY, think of removing it completely (unless someone is / will be using it -- then I'll fix it all)...
Jarmezrocks said:
Other than that....I only really have one suggestion and it isn't even really a suggestion as I have kind of already made it so I can just give it to you if you want it? And that is that most people (well I can't say most as I am not speaking for everyone) tend not to like how apps take over their system. This isn't your fault at all in anyway as the first dev thought it was a good idea back then.....and back then hardly anything in Windows knew what a freakin apk was so it was a GOOD thing.....However now, every man and his dog wants to steel .apk extension for himself. I myself tend to be all over the shop with apks so I tend not to want to have any particular Windows app take it away from my control. I use WinZip as the main app for simple double click open as I want to see the contents of apks without needing to decompile them (great for theming) however I have apk shell extensions displaying the apks main icon to explorer, so if I set WinZip as default I get a nice lumping hunk of gold turd/box running rampet all over my Windoze bro ......so if you like I can show you my code that allows me to have default apps for specific tasks without interfering with anyones existing sh!t It looks neat too as you can right click any apk and just choose from a dropdown list what particular app you want at the time. If one has the need to use more apps then they need only put those apps in a list. There is nothing worse than double clicking an apk to find that Bluestacks or some other rubbish Windoze crApp has taken offf with your apk.
Click to expand...
Click to collapse
The application is NOT taking over anything, Unless you've clicked the asterisk ("*") button on the System Tab...
Was it registered for you without clicking this button?
If so, I'll recheck the code (may be it's some residue from the original code).
BTW
As the previous part of the answer I've wrote -- this one was left in as of respect to @ido's work...
2nd BTW
I'd like to see that explorer extension (and [preferable] the code of it - if you are willing to share it) you ware writing about...
Jarmezrocks said:
Lastly I thought I'd ask, Why no config file? Why store everything in memory? I know it's only small....but seeking for things everytime it is executed is a pain in the arse and not good practice. At the very least if you have no idea how to make an exe totally portable then you could reference a config file in the same directory....Or do as most do and write entries to the registry all neat and tucked away. If we get paranoid about "portable-ness" then we write to temporary space in the registry and make sure we clean up upon closing and/or inspect at runtime. simple!
Click to expand...
Click to collapse
Yep, I've thought of it... But... I was thinking, that (at least) everyone is as geeky as me dauuh , and the most are setting the path correctly...
It'll be added in next version (I hope... TIME, TIME!!!! :cyclops...
Jarmezrocks said:
I have plenty of AutoIT scripts that do exactly that too, so if you are stuck for ideas let me know. Anyway I have rambled enough, good luck and I will keep reporting bugs haha
Click to expand...
Click to collapse
I prefer writing my own code (sorry, I'm a developer in heart and soul...) then using automation like Auto-IT...
Jarmezrocks said:
Edit: That's waaaay too many emoticons. Oooops someone is a little high aren't they?
Click to expand...
Click to collapse
Jarmezrocks said:
PS: I have attached my PNG of the icon I used for this bugger waaaaaay back....it's less generic and feel free to take it and abuse it and do as you please.
Click to expand...
Click to collapse
(@Jarmezrocks please see my PM to you.)
PHEW...
Long Answer, BUT HEY, I'm not the only one writing longies... :angel: (and i like referencing each and every part separately)...
dmagician said:
PHEW...
Long Answer, BUT HEY, I'm not the only one writing longies... :angel: (and i like referencing each and every part separately)...
Click to expand...
Click to collapse
Ahh yes. I write long messages sometimes when my medication has kicked in and I am high....not my fault I kinda need to get all the info out of my head in one go while I am awake.....or else there would just be zeds on the response zzzzzzzzzzzzzzzzzzzzzz lol :laugh: (ref narcolepsy).
I commend you on your efforts at responding to such gibberish and making good sense of it! :highfive:
I have responded to your PM accordingly, and hopefully covered all you need? I have attached all info and sources etc.....well most of it...actually a fair bit of it you will have to workout your self but that is part the fun. Shoot me any questions if you need to...although I have a feeling that you will have mostly all of it covered as you are streets ahead of my knowledge already. I may have misjudged a little in my previous post (although hopefully not to make you feel any less than you actually are? please excuse me if I had said anything that may offended - being naive or what ever....you ARE definitely on the right track). As for the middle menu....I think you could easily remove it and not offend the original dev. It wasn't being used as you mention...and I think it could make way for more/better functionality don't you think? (discuss). However I would ensure all the things I mentioned in my PM first before going too deep and releasing on here.
Good move on bringing the buttons back. They were functional. But I DO like the single button close GUI myself on just about everything else....It looks clean. We have similar taste in that regard. It just isn't functional for me to pressing the task notification desktop link everytime I want to minimise the app LOL.
The rest I we can discuss via PM, this is pretty much only posted here as an open area for other forum members to provide input and opinion (or complaint....like how often it usually is, eh?).
CyberianIce said:
I got this errors:
1:
2:
Error in property: [email protected]@usrdata
Click to expand...
Click to collapse
I'd got the same error!
For me it helped to copy two files to the install dir
"adb.exe" and "AdbWinApi.dll"
Both are installed with the well known MyPhoneExplorer into "Program Files\MyPhoneExplorer\DLL"
Hope it helps!
Feature Request
I use this tool for testing new APK builds on a project I am working on it. It allows me to quickly verify the version number and push to the device. However, since I am usually installing another version of an existing installed APK, I must manually uninstall before using APKSPY. Would it be possible to add a check box that would uninstall any previous versions? It would be really helpful.
Nevermind - I didn't fully read the message presented when it fail. It say uninstall/update and it allows the installation. HOWEVER, that brings up a question... Does it uninstall or does it update? There is a difference as you know.
Thanks,
Jonathan
Hi, I try to run this on Mac via Wineskin Winery, but no luck. Do I need something like .Net, or something else to run ApkSpy?
Thank you.
Ja_som said:
Hi, I try to run this on Mac via Wineskin Winery, but no luck. Do I need something like .Net, or something else to run ApkSpy?
Thank you.
Click to expand...
Click to collapse
The only requirement is the Microsoft .Net 4.
(I'll add this to OP)
jmo said:
I use this tool for testing new APK builds on a project I am working on it. It allows me to quickly verify the version number and push to the device. However, since I am usually installing another version of an existing installed APK, I must manually uninstall before using APKSPY. Would it be possible to add a check box that would uninstall any previous versions? It would be really helpful.
Nevermind - I didn't fully read the message presented when it fail. It say uninstall/update and it allows the installation. HOWEVER, that brings up a question... Does it uninstall or does it update? There is a difference as you know.
Thanks,
Jonathan
Click to expand...
Click to collapse
Yes I know there is difference between the two (update vs uninstall and install again).
It is updating the application (like using "adb install -r apk_file_name.apk"), not doing remove and install
Removed unneeded tabs (System, Batch Rename, Log)
Click to expand...
Click to collapse
The unneeded Batch Rename tab was the only tab I needed really. :laugh: Luckily I found Ido's original version. It's ideal for renaming all those apk's I downloaded and still have the package name when I back them up to my PC.
I have an Asus Memo Pad 10 and an Asus Memo Pad 7 and neither are recognised by APKSpy. Not that it's a problem as I have no problem copying to and from them with Windows Exploder or Total Commander.
Other than that, it's been a handy little app for this tablet/smartphone virgin newbie.
Martin.
wolrik said:
The unneeded Batch Rename tab was the only tab I needed really. :laugh: Luckily I found Ido's original version. It's ideal for renaming all those apk's I downloaded and still have the package name when I back them up to my PC.
I have an Asus Memo Pad 10 and an Asus Memo Pad 7 and neither are recognised by APKSpy. Not that it's a problem as I have no problem copying to and from them with Windows Exploder or Total Commander.
Other than that, it's been a handy little app for this tablet/smartphone virgin newbie.
Martin.
Click to expand...
Click to collapse
Hello.
1st:
I can -- if requested - re-add the Batch rename.
2nd:
I don't know why these two devices are not being recognized -- unless not being recognized by ADB itself -- since I'm spawning devices by parsing the resulting text of "ADB devices" command, So unless being unrecognized by ADB, there should be NO PROBLEM detecting ANY android device with ADB on...
if you have any exception messages thrown by the application, please post them here.
dmagician said:
Hello.
1st:
I can -- if requested - re-add the Batch rename.
2nd:
I don't know why these two devices are not being recognized -- unless not being recognized by ADB itself -- since I'm spawning devices by parsing the resulting text of "ADB devices" command, So unless being unrecognized by ADB, there should be NO PROBLEM detecting ANY android device with ADB on...
if you have any exception messages thrown by the application, please post them here.
Click to expand...
Click to collapse
No need to re-add the tab just for me, but thanks for the offer. As I get to know my way around Android I'll probably need such things less and less.
Sorry, but I know nothing about ADB other than APKSpy needing it. As you can see from the attached pic, the Asus is recognised by Total Commander
Martin.
Hi dmagician,
Nice work, and a shout-out to Ido who originally created it.
I have a feature request:
Could you add the option to remove certain permission(s) and save the modified APK file?
There are many apps which I feel allow themselves way too much permissions, and this option could be very useful to tame them apps.
One more thing:
I noticed that APKSpy v1.8.2 doesn't work with the latest version of AAPT.exe (1432KB), from the Android SDK r24.
So I had to use a previous version of AAPT.exe (833KB), which worked.
Thanks,
Eric
Hey does anybody know where the name of the apk is in the XML files inside the apk?

[SCRIPT][1.6+][WHATSAPP][14/11/08] Disable sending read-receipts for WhatsApp msgs

Shell script to disable read receipts for all your incoming Whatsapp messages
Even "better": Others won't see whether you've already read their message(s) or not. However, you will still be able to see the read receipts of others!
Code:
################################################################################
#
# Shell script to disable read receipts for all incoming Whatsapp messages.
#
# [ ANDROID AND ROOT ONLY ! ]
#
# Author: Stephan Schmitz <[email protected]>
# Source: https://gist.github.com/eyecatchup/9af90363732801b131bf
# Last Updated: 09. Nov 2014
#
# ABOUT
#
# You don't like that everyone in your Whatsapp contact list is now able to see
# whether you've already read their latest message(s) or not? Then feel free to
# use the following "work-around" that I found to disable sending read receipts
# globally. Once patched, whenever you get new messages, the senders will never
# see the 2 check marks in blue. They'll just stay gray, just like it was until
# recently. Well, almost. Because you'll still be able to see whether your chat
# partners have already read the messages you sent to them. ;)
#
# DESCRIPTION
#
# In early Nov. 2014, Whatsapp added a new "feature" - read receipts. It means,
# your chat partners will get a visual feedback (2 blue check marks) as soon as
# you've read their message(s).
#
# Unfortunately, Whatsapp's dev team forgot to implement a corresponding privacy
# setting for users to be able to turn off this feature. However, fortunately, I
# found it was fairly simple to disable the feature, since it is set in a public
# XML file in Whatsapp's app data directory.
#
# This script shall serve as a convenient wrapper for those Android users who do
# not live in userland - as well as for the lazy ones.
#
# PRE-REQUIREMENT
#
# Basically, all it needs is a working `sed` commandline utily in path.
# If you should not have "Busybox" installed yet, choose one of the available
# "Busybox" installer apps from Google Play Store and let it install busybox.
#
# USAGE
#
# - Save this script to your phone's sdcard as disable_whatsapp_read_receipts.sh
# - Open a terminal session on your device
# E.g. https://play.google.com/store/apps/details?id=jackpal.androidterm
# - In the console, login as root (type su, hit enter) and type:
# sh /sdcard/disable_whatsapp_read_receipts.sh
# (adjust the path, if required, to fit your's!)
# - Hit the enter button. Done. (Whatsapp will restart afterwards)
#
# If you get any error message a) make sure the /data partition is mounted /w rw
# permissions and b), if the permission for restarting WA is denied, 1st try to
# uncomment the last line of this script (append hash char "#" (without quotes))
# and run the again. Otherwise, consult me for help here:
# http://forum.xda-developers.com/android/development/script-disable-whatsapp-read-receipts-t2933467
#
# IMPORTANT NOTE
#
# The last successful test for this was run at 09. Nov. 2014 and on the Whatsapp
# Android version 2.11.399 and 2.11.432 only. Even though it should work for all
# Android versions, it was not tested. Also, Whatsapp might change their current
# implementation any time soon. So this work-around might stop working any time
# soon too. Keep that in mind!
#
################################################################################
Download
NOTE: This script requires the "sed" command line utily (ie "busybox") installed on the system, which pre-requires a rooted device!
NOTE: The gist requires an update, which I'll post tomorrow. For further details and a manual workaround see my post here: http://forum.xda-developers.com/showpost.php?p=56640205&postcount=9
External link to gist.github.com (see the inline comments for further instructions): http://goo.gl/EiOvO0
Download, run, done. Enjoy. Whatever.
PS: For those who understand German, here're some screenshots of testing this " hack". As you can see, my chat partners can't see the read status. http://imgur.com/a/kzQs3
Nice trick!
However, I've noticed that the preferences .XML files are reset to the original values once the application relaunches. So, basically, the changes do not stick.
Any workaround on this?
smartxdev said:
Nice trick!
However, I've noticed that the preferences .XML files are reset to the original values once the application relaunches. So, basically, the changes do not stick.
Any workaround on this?
Click to expand...
Click to collapse
That's kind of odd, since the script explictly restarts the Whatsapp package *after* applying the changes to the prefs xml. Which then, in turn, should result in no result at all (assuming a restart rewrites the xml), right!? But it does work. Now, the first question would be how you define restart (activity (re)launch, package force && start)?
Update: Just checked it and you're right. If I use the -S option on the am start call (to force stop Whatsapp before (re)starting the activity), running script has no effect at all - since the XML is being recreated. And that also means, that the change will gets lost with every device reboot.
The easiest solution I see here, to have a "permanent" effect, to wrap the script in a plain simple app and attach it an onboot service. (Also, looking at #4, some further checks should be added.) If Whatsapp will leave this current implementation of defining whether to send read receipts or not, I'll invest the time into an app version, I think. (Just don't want to have too much hustle with it. So want to wait whether it's worth to spend more time on this.) Thoughts?
hi, i have this problem:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
can you fix it?
Dj Mauro said:
hi, i have this problem:
can you fix it?
Click to expand...
Click to collapse
I had permission error too.
In the terminal, try to first run "su" command (without the quotation marks), it will obtain root permissions for the terminal.
Then run the actual command. That solved the permission error for me.
Bexton said:
That's kind of odd, since the script explictly restarts the Whatsapp package *after* applying the changes to the prefs xml. Which then, in turn, should result in no result at all (assuming a restart rewrites the xml), right!? But it does work. Now, the first question would be how you define restart (activity (re)launch, package force && start)?
Click to expand...
Click to collapse
Actually it never worked for me (I mean, script ran successfully, but i have no success in disabling the "read recipient" when i tested it).
Then, I tried to do it manually:
- make a backup copy of the target file (/data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml)
- and then set: "read_receipts" to value="0" in the original file
- save it
- and when i open whatsapp app again, the XML file is restored to the older values, and the "backup" copy gets erased.
And for the "restart" question, i tried the following:
1 - swipe the app away from the recents, make XML modifications, and relaunch
2 - kill the app, make XML modifications, and run it again
I also tried to set XML file permissions to read-only, but it still was replaced by original config. once i opened the app.
-----
I was thinking about another workaround:
Since the read receipt (and delivery too) is usually done by transmitting a small message by the application, back to the sender, once the conversation window is opened.
It may be possible to just block this outgoing communication on your side by XPrivacy.
But, i have yet to hunt down the specific permission/address to block, without crippling the app..
Dj Mauro said:
hi, i have this problem:
snip
can you fix it?
Click to expand...
Click to collapse
As a quick fix, this should work for you:
1.) Add the following line above the line with the sed command:
Code:
mount -o rw,remount /data
2.) Change the last line of the script to the following (if it still compains replace the user id value in the command with that from the error message. and if it still complains, it might even work when you just comment out the line):
Code:
echo `am start --user -2 -n com.whatsapp/com.whatsapp.Conversation`
3.) Back in the console again, login as root (su, enter) and run the script.
Let me know if it worked.
As said in my update to post #3, I'll probably add some automatisms for such issues soon.
Bexton Tnx !
how about an xposed module?
smartxdev said:
I had permission error too.
In the terminal, try to first run "su" command (without the quotation marks), it will obtain root permissions for the terminal.
Then run the actual command. That solved the permission error for me.
Click to expand...
Click to collapse
Yeah, recognized already that I completely forgot to mention that at all (to run the script as root). I updated the inline instructions accordingly.
smartxdev said:
Actually it never worked for me (I mean, script ran successfully, but i have no success in disabling the "read recipient" when i tested it).
Then, I tried to do it manually:
- make a backup copy of the target file (/data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml)
- and then set: "read_receipts" to value="0" in the original file
- save it
- and when i open whatsapp app again, the XML file is restored to the older values, and the "backup" copy gets erased.
And for the "restart" question, i tried the following:
1 - swipe the app away from the recents, make XML modifications, and relaunch
2 - kill the app, make XML modifications, and run it again
I also tried to set XML file permissions to read-only, but it still was replaced by original config. once i opened the app.
Click to expand...
Click to collapse
Sheesh. Okay, I think I got what's wrong here.
As far as I understood, you didn't even got to the point where the file
Code:
/data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml
stored the modified value, correct?
When I was looking at your manual procedure I recognized a small but probably crucial difference! Let's have a look at it. My initial, manual approach was:
# Login as root
Code:
[email protected]> [B]adb shell[/B]
[email protected]:/ $ [B]su[/B]
# Copy the original prefs xml file to /sdcard/.
# NOTE: We use cp as root user, but with the --preserve switch to copy a file owned by Whatapp's OS user.
Code:
[email protected]:/ # [B]cp -p /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml /sdcard/[/B]
# So, at this point, the copied file /sdcard/com.whatsapp_preferences.xml is still owned by Whatapp's OS user.
# Now, my last 2 steps were to modify the read-receipts settings value in /sdcard/com.whatsapp_preferences.xml and copy back the modified file to its original location, which I did as follows:
Code:
[email protected]:/ # [B]sed -i'.bak' 's/^.*\bread_receipts\b.*$/ <long name="read_receipts" value="0" \/>/g' /sdcard/com.whatsapp_preferences.xml[/B]
[email protected]:/ # [B]cp -p /sdcard/com.whatsapp_preferences.xml /data/data/com.whatsapp/shared_prefs/[/B]
So all together, this was:
Code:
[email protected]> [B]adb shell[/B]
[email protected]:/ $ [B]su[/B]
[email protected]:/ # [B]cp -p /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml /sdcard/[/B]
[email protected]:/ # [B]sed -i'.bak' 's/^.*\bread_receipts\b.*$/ <long name="read_receipts" value="0" \/>/g' /sdcard/com.whatsapp_preferences.xml[/B]
[email protected]:/ # [B]cp -fp /sdcard/com.whatsapp_preferences.xml /data/data/com.whatsapp/shared_prefs/[/B]
So what happened with the last 2 commands that made it work for me, but breaks in the script version?
The core problem here is, as I just learned, that GNU sed's -i extension does not actually edit files in place (--in-place is a misnomer, in my opinion); it creates a temp file, deletes the original file, then renames the temp to the name of the original. The result is a new file - much possibly with a different owner.
So in my manual procedure, the result of the sed command worked fine except for the fact that it changed ownership on all the files it went through. The only problem is that these files (or at least the backup file) were owned by the root user - the user I run the command as. However, then I used the -f switch (to force overwrite) and the -p switch (to preserve permission, ownership and timestamps) to copy back the prefs file from /sdcard/ back to its original location in the Whatsapp data folder. That means, as a result, in the Whatsapp data folder there was a) no new file from another user (the backup file) and b) the modified prefs xml file still had its original ownership information. Basically, this kind of "fixed" sed's -i mode behaviour on the prefs file plus didn't created a new file in Whatsapp's data folder.
The last step to solve the puzzle is fairly simple. I just tried the procedure manually - as defined upthread - with all my friends' phones. Thus, I didn't noticed the sed behaviour. Plus, the friend Iinitially wrote the script for didn't told me that it wasn't working for him.
Anyway. Let's finally come to how to fix.
A quick look into the sed manual unveils that -c switch should do the trick:
Code:
-c, --copy
use copy instead of rename when shuffling files in -i mode
(avoids change of input file ownership)
Unfortunately, this switch is not enabled in all the busybox sed's for Android. Also, this would still leave us with a new file in Whatsapp's data directory. Even if all ownership information of existing files can be preserved, we should also not create any files in the folder that are not known to the Whatsapp app.
So basically my manual approach is the way to go:
a) Save the backup of the original prefs file somewhere on /sdcard/
b) Preserve ownership and permissions for /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml
NOTE: Even if you got the value in the prefs xml saved to "0" and with no changes to ownership and permissions, you still need to restart any running Whatsapp process. Otherwise the change will have no effect! And, rebooting the device, resets the prefs xml file!
I'll post an updated version later. Until then, probably the easiest way to test this, is the manual way using a text editor app on your device.
- Open any text editor app with root capabilities (I used https://play.google.com/store/apps/details?id=com.maskyn.fileeditor )
- From the menu choose "Open file", navigate to /data/data/com.whatsapp/shared_prefs/ and open the file com.whatsapp_preferences.xml
- Find the line that reads <long name="read_receipts" value="SOMENUMBER" /> (SOMENUMBER is a placeholder, of course)
- Replace SOMENUMBER with 0 (zero), so the line reads <long name="read_receipts" value="0" />
- Save the file
- Now, close Whatsapp from the recent apps view and restart it.
- You can verify the change by running the following command (as root) from a terminal on your phone:
Code:
cat /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml |grep read
- You can verify the ownership and permissions by running the following command (as root) from a terminal on your phone:
Code:
ls -l /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml
smartxdev said:
I was thinking about another workaround:
Since the read receipt (and delivery too) is usually done by transmitting a small message by the application, back to the sender, once the conversation window is opened.
It may be possible to just block this outgoing communication on your side by XPrivacy.
But, i have yet to hunt down the specific permission/address to block, without crippling the app..
Click to expand...
Click to collapse
Sure, feel free to share any suggestions!
Ather said:
how about an xposed module?
Click to expand...
Click to collapse
I guess that'd be possible too. Just that I never looked into it yet.
Thanks, @Bexton for your detailed explanation.
Manual editing by Turbo Editor did the work for me.
I tested it, and the blue check marks were indeed blocked.
And btw, Turbo Editor has a nice "recent files" list on the startup, so reediting of the parameter on restart should be simple and easy.
Then, i did Restart (full restart to the device), and.... ...it still holds!
The parameter in the XML is unchanged and read notifications are still blocked
So, it made me wonder, why it didn't work for me before? I used ES Text Editor to edit the XML, it was fine, but then i made a backup copy somewhere inside the /data/data/com.whatsapp/ folder. And I think that "foreign" file caused full rewrite of the xml files by the app.
I hope it may hold permanently, but, we'll see..
Ahoy everyone!
We're 2 students from the University of Milan who created a repository [https://github.com/phosphore/whatsapp-blue/wiki]
for an Android app with the aim of getting rid of those blue ticks. We're currently
considering and testing out all the possible solutions including the modification
of com.whatsapp_preferences.xml (as found by @Bexton) or the filtering of the TCP
packet responsible for the read receipt.
Although using Bexton's method greatly simplifies the solution, it is just a
temporary workaround before Whatsapp fixes it.
Having a proxy filtering the requests should be a permanent solution. We are
reverse engineering FunXMPP (WA proprietary protocol) to find that particular request.
We're open to contribution!
smartxdev said:
So, it made me wonder, why it didn't work for me before? I used ES Text Editor to edit the XML, it was fine, but then i made a backup copy somewhere inside the /data/data/com.whatsapp/ folder. And I think that "foreign" file caused full rewrite of the xml files by the app.
I hope it may hold permanently, but, we'll see..
Click to expand...
Click to collapse
Some editors use a similar internal workflow as GNU's sed in -i mode and without the c switch. Resulting in "corrupted" files (in the sense of ownership & contex)..
Th3Zer0 said:
Ahoy everyone!
We're 2 students from the University of Milan who created a repository [https://github.com/phosphore/whatsapp-blue/wiki]
for an Android app with the aim of getting rid of those blue ticks. We're currently
considering and testing out all the possible solutions including the modification
of com.whatsapp_preferences.xml (as found by @Bexton) or the filtering of the TCP
packet responsible for the read receipt.
Although using Bexton's method greatly simplifies the solution, it is just a
temporary workaround before Whatsapp fixes it.
Having a proxy filtering the requests should be a permanent solution. We are
reverse engineering FunXMPP (WA proprietary protocol) to find that particular request.
We're open to contribution!
Click to expand...
Click to collapse
Could you hook up via email? I'm working on an app as well and currently considering the possibilities. Maybe it's worth sharing thought.. Please send to [email protected], thanks!
This is why I waited before investing more time into it, hehe. So, time to relax for everyone. Here is news:
Whatsapp will soon get the ability to turn off the blue checkmark read indicator, according to an alleged Beta tester of the application.
Click to expand...
Click to collapse
Original tweet: https://twitter.com/0xmaciln/status/530294585072025600
Via: http://www.myce.com/news/whatsapp-w...ble-privacy-sensitive-blue-check-marks-73438/
Looks like this thread will be obsolete very soon.
Bexton said:
Whatsapp will soon get the ability to turn off the blue checkmark read indicator, according to an alleged Beta tester of the application.
Original tweet: https://twitter.com/0xmaciln/status/530294585072025600
Via: http://www.myce.com/news/whatsapp-wi...k-marks-73438/
Looks like this thread will be obsolete very soon.
Click to expand...
Click to collapse
Nice!
I think whatsapp(facebook?) expected this to come, they already had some bad experience with the "last seen" issue some time ago.
And it is already implemented as a simple switch inside XML prefs...
Bexton said:
Looks like this thread will be obsolete very soon.
Click to expand...
Click to collapse
Hm, maybe I was wrong and it will not become obsolete. Maybe I will still build an app for it. Why? I found more news on the matter, that pointed out a major difference to me.
The same person who confirmed the additon of the on/off toggle for the read receipts, Ihlan Pektas, actually blogged about the feature already a few days ago. The essential information given in his blog post here (in German language) for me is, that he says that early alpha builds already have an implementation for it, and when you disable sending your read status (so that others can't see if you've read a msg), you will, in return, NOT be able to see the read status of your chat partners! (What makes perfectly sense, becausee it's the same way they do it for the "last seen" status.)
That being said, I think there'll be interest in an alternative. An alternative that is capable of disable sending one's own read status, while still being able to see the read status for one's own msgs, sent to others?!
Well, we'll see. (But the party ain't over yet.. )
Thanks Bexton. Tried your manual method with ES File Explorer, without making a backup, and it works. Even survives a full reboot.
Bexton said:
That being said, I think there'll be interest in an alternative. An alternative that is capable of disable sending one's own read status, while still being able to see the read status for one's own msgs, sent to others?!
Well, we'll see. (But the party ain't over yet.. )
Click to expand...
Click to collapse
I see your point, but to make this happen, we need to look at another approach. Because, now we disable it by the pretty obvious flag in the pref. file, and once they release a "feature" it will be probably the same flag that will cause you not the deliver read receipts either.
The thing is, that in fact I barely use whatsapp, for various reasons. I'm here to help some non-techie friends of mine.
Anyways, I use Open WhisperSystems' TextSecure mostly (less polished and fewer features, but free, opensource, and actually secure).
So, a short while ago, they've introduced "delivery receipts". And for some reason, only I was able to get others' delivery receipts, but when others send me messages, they didn't receive a delivery receipt from me. (That's basically what we are trying to do here, just with read receipts)
At first, I was sure there is some bug in this. But then it turned out that I tuned XPrivacy too tight on restrictions, and this new feature could not get through and send the delivery notice. (unfortunately I don't remember what exactly the troublesome restriction was)
That's why i first thought about XPrivacy for this case as well.
Logically, the mechanism here might be the same, and once we find out what activity or address to block it will do the trick without letting the app itself know about it.
And it seems like @Th3Zer0 guys have the same direction in mind.
Bottom line: sounds like a good idea to find out how to "cheat" those things, and maybe build Xposed module/app on it
This seems to be the equivalent of downgrading whatsapp, letting you see blue ticks but other's cant see
It seems that it disables the part where you can highlight your own message and see who has seen the message though.
Working on 2.11.432.
Whatsapp just enabled a new feature a la Telegram where you can see who's typing in a group.
Contradictory to my previous report, I'm noticing that over time the "read_receipts" parameter keep reverting to a original value. What's weird though is that i was unable to pinpoint when it actually happening, since it happens without any kind of full phone restart in between.
Have you (@Bexton?) any insight on it?
And by the way, as I was talking about the sadly unpopular, but security-wise superior TextSecure, this post came out: Open Whisper Systems partners with WhatsApp.
Sounds promising, but it still remains to be seen how it all gets implemented and how much of a metadata leakage will be going on, since it is very unlikely that a proprietary and closed source SW company as WhatsApp will kill their business value (which is an insight on near 700M users' data) just like that.

Categories

Resources