[APP][2.2+][24 Jul - v0.11] CommandCenter the power of shell without the terminal - Android Apps and Games

Have you ever dreamed of an app to execute your favorite shell commands, whether it is for collection dmesg/logcat/dumpsys or set kernel parameters.
Well here comes CommandCenter, a generic app for grouping all your favorite commands.
CommandCenter is free with ads and can be downloaded from the Google Play (please be patient, it takes a while to update as I just published)
It is also open source and your can check my repo to inspect / review the code.
If you are a kernel developer you may want to provide a tool for your users to run certain commands without havint to maintain an app for that; if yes just submit a Command Set and have your users download it.
If you are a poweruser there are commands that you use all the time, wither from adb shell or in the terminal. Make one or multiple Command Set and enjoy the comfort of an Android app and the power of your favorite commands.
From version 0.10 a Locale / Tasker Plugin was added to execute command from actions.
{
"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"
}
How it works
The command sets are stored of the sdcard in the app's private folder /sdcard/Android/data/com.asksven.commandcenter/files in the form of json files. On load the files are parsed and each file (Command Set) shown as a tab.
A single click on a Command displays its details, a long click pops up a dialog from where you can run the command (this is configurable in the preferences).
A command has two parts:
- the command to be executed itself: it may contain a variable and in that case a popup will ask for the value to be used
- an optional command to retrieve a status: if a status can be read it will be displayed
CommandCenter comes with two pre-configured Command Sets:
- general commands for logging / diagnosis
- a few command for Fracisco Franco's awsome GN kernel
Want to contribute?
If you want to create and distribute command set just drop me a PM. I would be happy to give you more details about the syntax of the command sets and there is a section in this thread to list authored Command Sets. I may also add some to the Market app.
Caution
Always check the command's before running them. CommandCenter support 'su' command and you should know what you do as those could harm your phone. I will not take any responsibility for any dammage caused by command run using CommandCenter
Contact
You can contact me here (PM, this thread) or on twitter

Release Notes
v0.11.0 2012-07-24
Major fix: added synchronization to avoid freeze conditions
#24: "refresh" reads changes on command collections from the external storage
#26, #27, #28: different error conditions from reports
v0.10.1 2012-05-06
#15: samples scripts were being re-created on every start instead of once at first install
#14: FC when turning to portrait
#16: FC when number of result lines for a command < 5
#17: Various FC conditions from google play logs
#21: error in one script should not cause the other not to load
v0.9.0 2012-03-10
Solved stability issues (threaded processing)
Tablet support
#8: new command dialog layout
v0.8.0 2012-02-24
#4 Popup menu was called "edit"
#5 added support for user defined and editable commands
#6 added support for commands returning data
v0.7.2 2012-02-12
#2: dumpsys missing su, and logcat files have zero-length
#3: A few issues with backward compat to Android 2.1/2.2 fixed
v0.7.1 2012-02-11
#1: fixed Android 2.1 compatibility issue
v0.7 2012-02-11 Initial release

Command Sets
If you want to create command set for CommandCenter please read this

FAQ
For future use

sounds quite nice, can't wait to try. Have been using Tasker + Secure Settings for that so far, let's see how it compares.

V0.7.1
Fixed a minor issue with Android 2.1 (getExternalFilesDir does not exist on Eclair)

When I try and dump logcat radio or logcat it creates the file but it's blank. Also when I dump alarms the file reads Permission Denial: can't dump AlarmManager from pid=5637, uid=10128. ComandCenter never ask for SU Permissions. I ran the dump alarms with su permission from the terminal and it worked fine. HTC Inspire running ICS.

harpo1 said:
When I try and dump logcat radio or logcat it creates the file but it's blank. Also when I dump alarms the file reads Permission Denial: can't dump AlarmManager from pid=5637, uid=10128. ComandCenter never ask for SU Permissions. I ran the dump alarms with su permission from the terminal and it worked fine. HTC Inspire running ICS.
Click to expand...
Click to collapse
Ok the alarm dump is fixed, it was a definition error in the command set (dumpsys did not require su).
Testing the other commands now on rooted and unrooted device

V0.7.2
Fix-Release is rolling out, see post #2 for release notes.
I did quite a lot of testing on 2.1, 2.2, 2.3 and 4 devices with and without root and I hope the fixes work for everyone.

chamonix said:
Fix-Release is rolling out, see post #2 for release notes.
I did quite a lot of testing on 2.1, 2.2, 2.3 and 4 devices with and without root and I hope the fixes work for everyone.
Click to expand...
Click to collapse
Thanks for fixing this so fast. Everything is working perfectly now. Great app.

Another great release from chamonix
I have been looking for an app like this..so thank you very much. Now I'll start study it to take full advantage from it
Sent from my sandwiched SGS

It's time to collect some feature requests and build some use cases. Do you guys have suggestions for feature or know a kernel dev who has no time to write a sexy "settings" app. I'd be happy to provide the command sets while finalizing the schema aiming at making it public for contributors

Should it be possible to add or modify the command sets? I don't seem to be able to do either. In Edit mode, my soft keyboard never open and I don't see any option to create a new command set. Maybe I'm just not looking in the right place?
This is on a Samsung Galaxy Nexus running a rooted AOSP ICS.

short/y said:
Should it be possible to add or modify the command sets? I don't seem to be able to do either. In Edit mode, my soft keyboard never open and I don't see any option to create a new command set. Maybe I'm just not looking in the right place?
This is on a Samsung Galaxy Nexus running a rooted AOSP ICS.
Click to expand...
Click to collapse
In fact the is no way of editing the commands from within the app. I have been thinking about that a lot and the functionality itselt is not the problem (it occurs to me that the popup menu is named "edit" and this is of course not correct).
The reason I did not provide edition of commands within the app is that I want to offer a distribution channel for authors to update their command sets. Those updates would overwrite the local changes.
What you can do to edit the commands is edit the json files located on the sdcard in Android/data/com.asksven.commandcenter/files (one file per command set).
Do you feel the need to have "local" commands as well that could be edited from the app and stored in a local database?

chamonix said:
In fact the is no way of editing the commands from within the app. I have been thinking about that a lot and the functionality itselt is not the problem (it occurs to me that the popup menu is named "edit" and this is of course not correct).
The reason I did not provide edition of commands within the app is that I want to offer a distribution channel for authors to update their command sets. Those updates would overwrite the local changes.
What you can do to edit the commands is edit the json files located on the sdcard in Android/data/com.asksven.commandcenter/files (one file per command set).
Do you feel the need to have "local" commands as well that could be edited from the app and stored in a local database?
Click to expand...
Click to collapse
Local commands would be handy also you can do generics for brand htc Samsung etc as the kernels tend to have commands in the same spot, also a log viewer would be cool but they are. Readily avaliable
Sent from my HTC Evo 3D using Tapatalk

Auto upload to paste bin would be sick and the ability to email to dev as well as adding the kernel version to the file name
Sent from my HTC Evo 3D using Tapatalk

chamonix said:
In fact the is no way of editing the commands from within the app. I have been thinking about that a lot and the functionality itselt is not the problem (it occurs to me that the popup menu is named "edit" and this is of course not correct).
The reason I did not provide edition of commands within the app is that I want to offer a distribution channel for authors to update their command sets. Those updates would overwrite the local changes.
What you can do to edit the commands is edit the json files located on the sdcard in Android/data/com.asksven.commandcenter/files (one file per command set).
Do you feel the need to have "local" commands as well that could be edited from the app and stored in a local database?
Click to expand...
Click to collapse
Yes, I'd like to have that. I can think of a few I'd like to have NOW as opposed to waiting for someone to come up with them
Code:
df -h /sdcard
df -h
ls -lrt /mnt/sdcard | tail
ls -lrt /sdcard/Download | tail
ping www.google.com
ifconfig lte_rmnet1
netstat -rn
netstat -l
netstat | grep CLOSE
uptime
And probably few others that I could come up with once I really thought about it. Why not have "protected" command sets which are updated thru the app or Market and "user" or, as you call them, "local"?

First of all, thanks for develop another great application.
I concur that having the possibility to add commands is really a 'must have'. Of course, if we are thinking about to create commands, this means all of us have already a terminal app installed to run them, but the purpose of this app is to make life easier for having our favorite commands ready to execute. Many of these commands are possibly a small subset of common ones, but even with that, I probably prefer to redirect the output to a diffferent place that abother user using the same command. So having a 'user tab' to be able to add, edit and delete commands (also maybe copy a command from other tab) will be very useful.
Anyway, congrats for comming up with this useful app.

short/y said:
Yes, I'd like to have that. I can think of a few I'd like to have NOW as opposed to waiting for someone to come up with them
Code:
df -h /sdcard
df -h
ls -lrt /mnt/sdcard | tail
ls -lrt /sdcard/Download | tail
ping www.google.com
ifconfig lte_rmnet1
netstat -rn
netstat -l
netstat | grep CLOSE
uptime
And probably few others that I could come up with once I really thought about it. Why not have "protected" command sets which are updated thru the app or Market and "user" or, as you call them, "local"?
Click to expand...
Click to collapse
One question about those commands: some of them return results that will not fit on one line and so would not fit in the space reserved for the status (lower line in the list).
How would you like to display the result?
- as a popup when running the command
- as a multi line status field 'growing' when required and updating automatically

pp1276 said:
First of all, thanks for develop another great application.
I concur that having the possibility to add commands is really a 'must have'. Of course, if we are thinking about to create commands, this means all of us have already a terminal app installed to run them, but the purpose of this app is to make life easier for having our favorite commands ready to execute. Many of these commands are possibly a small subset of common ones, but even with that, I probably prefer to redirect the output to a diffferent place that abother user using the same command. So having a 'user tab' to be able to add, edit and delete commands (also maybe copy a command from other tab) will be very useful.
Anyway, congrats for comming up with this useful app.
Click to expand...
Click to collapse
I am convinced: https://github.com/asksven/CommandCenter/issues/5

Related

[APP][4.1+][ROOT] User Management - Simple multi user helper

User Management
Dropbox link - While it's available on Dropbox, I'd really prefer it if you would use the Google Play option, as it help me keep statistics on device usage, and allows you to send error reports in case of problems
As recently discovered, Jelly Bean contains experimental and unofficial multi user support.
I've written an app for rooted Jelly Bean devices that allows anyone to use a simple GUI interface to do the following, without even touching the command line:
Create a user
View list of existing users
Rename users
Delete users
Switch to another user
The Primary user can be renamed, but not deleted. I disabled its deletion as it near-bricks the device, as detailed here (along with fix if you somehow manage it).
There is a donate version as well, but I won't be linking to that as it seems to be against the rules.
NOTICE: The SD Card permissions are required to rename the users. I couldn't find a way to save to the file system, so I read the user's file using the cat shell command, edited it with the new name, saved it to the SD Card and then used the cat command to overwrite the initial file. It's hacky, but it works.
I'd appreciate it if you could try out the app, perhaps buy it if you like it
Comments/suggestions are always welcome
As of now, the only way to switch back to the Primary user is if you hold down the power button and select the Primary user from there. This is because root access does not persist for any app, including Superuser itself across different accounts.
{
"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"
}
FAQ
What commands were used?
All were executed in a # (root) shell
To create a user (leave the quotes in if the username being create has a space. Single word names don't need them):
Code:
pm create-user "user name"
To delete a user (replace <user-id> with the user's ID):
Code:
pm remove-user <user-id>
To list all users:
Code:
pm list-users
To switch to another user (replace <user-id> with the user's ID):
Code:
am switch-user <user-id>
To rename a user:
There is no command for this. I used the cat command to read the user's xml file (/data/system/users/<user-id>.xml) into a string array, replaced the user name, saved the file to the SD Card and used the cat command again to overwrite the original file. To reboot after the rename I used:
Code:
reboot
What could come handy is setting profiles for personal n General usage, most people use various call hiding, media hiding apps to hide personal stuff, the ideal way will be to unlock the phone with two patterns at the screen lock level, one pattern unlock for general profile the other for personal use where your personal call logs, media for gets unlocked automatically, there's an app call switch me, but it requires rebooting which is not practically usable
Sent from my GT-N7000 using xda premium
sanghaviraj said:
What could come handy is setting profiles for personal n General usage, most people use various call hiding, media hiding apps to hide personal stuff, the ideal way will be to unlock the phone with two patterns at the screen lock level, one pattern unlock for general profile the other for personal use where your personal call logs, media for gets unlocked automatically, there's an app call switch me, but it requires rebooting which is not practically usable
Sent from my GT-N7000 using xda premium
Click to expand...
Click to collapse
This is really not what the app was designed for. This app was meant to be a simple GUI interface to try out the limited multi user support without having to go to a terminal emulator or adb each time you wanted to do something like create or modify a user. The features you request should be implemented by Google themselves, as they likely will be in upcoming upgrades, and not by a third party app.
Any other comments/suggestions from anybody?
cool app
Good job brotha!
Billy
Raghav Sood said:
Any other comments/suggestions from anybody?
Click to expand...
Click to collapse
Could you show a screen shot of the final build main menu (the user selection screen)? Does this show up when you first boot up your phone/tablet?
Thanks!
TBayTom said:
Could you show a screen shot of the final build main menu (the user selection screen)? Does this show up when you first boot up your phone/tablet?
Thanks!
Click to expand...
Click to collapse
The third screenshot does show the user selection screen. You can tap on any one of the users, and a Context Menu shows up allowing you to rename, switch to, and delete that user.
Here is a screenshot of the menu:
This app does not start up on boot. Once booted, you must manually use the Primary account to open the app. This is because the app is simply meant to allow you to create and manage the users without using the terminal with a nice GUI, not attempt to replace or provide functionality that can only come from Google.
One suggestion: Landscape mode
Raghav Sood said:
User Management
As recently discovered, Jelly Bean contains experimental and unofficial multi user support.
I've written an app for rooted Jelly Bean devices that allows anyone to use a simple GUI interface to do the following, without even touching the command line:
Create a user
View list of existing users
Rename users
Delete users
Switch to another user
The Primary user can be renamed, but not deleted. I disabled its deletion as it near-bricks the device, as detailed here (along with fix if you somehow manage it).
There is a donate version as well, but I won't be linking to that as it seems to be against the rules.
NOTICE: The SD Card permissions are required to rename the users. I couldn't find a way to save to the file system, so I read the user's file using the cat shell command, edited it with the new name, saved it to the SD Card and then used the cat command to overwrite the initial file. It's hacky, but it works.
I'd appreciate it if you could try out the app, perhaps buy it if you like it
Comments/suggestions are always welcome
Click to expand...
Click to collapse
dietrichmd said:
One suggestion: Landscape mode
Click to expand...
Click to collapse
Sure. I'll push an update with it in a few hours
You may want to look at UserDetailSettings.java in the Settings app for the package manager code to enable/disable apps per user.
https://android.googlesource.com/platform/packages/apps/Settings/+/jb-release/src/com/android/settings/users/UserDetailsSettings.java
Not sure if it's easy or not but your app driven by a nfc tags open some interesting scenario like when i give the phone to my wife and she say: "oh, what a mess my iphone have few icons..."
or a shared phone usage for team ... or something like the chamaleon gui that when I arrive at home i switch the user from the profession usage to the private ones. Should be nice.
Is this doable?
Zemaree said:
Not sure if it's easy or not but your app driven by a nfc tags open some interesting scenario like when i give the phone to my wife and she say: "oh, what a mess my iphone have few icons..."
or a shared phone usage for team ... or something like the chamaleon gui that when I arrive at home i switch the user from the profession usage to the private ones. Should be nice.
Is this doable?
Click to expand...
Click to collapse
Yes. Both of these are doable. However, this isn't the purpose of the app. Though considering the amount of requests I've received for such features, I'll be making another app that does all this and more very soon.
So other than creating/naming etc is there any functionality like choosing apps/restrictions for accounts at this stage?
works as advertised keeps all apps from primary user on the guest accounts they just don't see any info becuase its like just installing them. Good job.
ellesshoo said:
So other than creating/naming etc is there any functionality like choosing apps/restrictions for accounts at this stage?
Click to expand...
Click to collapse
Well, @bradymobile did post a link to the source code of a User Specific Settings screen a few posts back. However, this appears to be in accessible from the normal Settings menu, and so I'm currently looking for the correct intent to open it up. Beyond that, you can use Nova or Apex as the launcher for the guest user(s), and hide all the apps you don't want to be visible there.
on latest cm10 the user management app doesnt seem to be able to gain root. In fact, even superuser isnt granted root once you switch to an account other than the primary. suerpuser denies itself and the user mangement app.
mallman said:
on latest cm10 the user management app doesnt seem to be able to gain root. In fact, even superuser isnt granted root once you switch to an account other than the primary. suerpuser denies itself and the user mangement app.
Click to expand...
Click to collapse
This is because apparently root doesn't persist across user accounts. The only way to switch back to the primary account is by using the power menu options. I haven't quite figured out why the root won't persist. It happens to all apps that need root.
Raghav Sood said:
This is because apparently root doesn't persist across user accounts. The only way to switch back to the primary account is by using the power menu options. I haven't quite figured out why the root won't persist. It happens to all apps that need root.
Click to expand...
Click to collapse
that is interesting. i would ask if the superuser permissions have changed upon switch but obviously you're not rooted so you cant tell. Following closely so god luck and thanks for the dev!

[SCRIPT] Proprietary Lib Cleaner (silence logcat spammers with ease)

Proprietary Lib Cleaner (PLC)
Linux shell script that allows you to silence certain lines from chatty proprietary binaries/libs which makes logcat actually readable, instead of it getting spammed by binaries such as mpdecision or thermal-engine.
Made with intention to be easily extensible for end-user. (would love to see a big database of hexxable strings)​
Article featured on XDA Portal!:
http://www.xda-developers.com/android/clean-up-your-logcat-code-with-lib-cleaner/
Why I have created it.
I have made this shell script because I have experimented earlier with replacing hex strings in proprietary files, which worked out very well. I have had a lot of hassle trying to make the hex string replace work. But I found this great tool called Swiss File Knife that allows you to make hex replacements by just entering the string. Because of this it was very easy to create a template system so that users can easily add more entries to the database, rather then needing to adjust code of script every time.
{
"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"
}
The template system works like this:
Every binary/library is placed in the corresponding directory but in a virtual replication, in these files are the lines that need to be hexxed out of the binaries are present. nothing less nothing more.
Example 1:
~/ProprietaryLibCleaner/dbs/system/bin contains mpdecision which is a regular text file with the following strings inside it:
Code:
num online cores: %d reqd : %d available : %d rq_depth:%f
hotplug_avg_load_dw: %d
UP cpu:%d core_idx:%d Nw:%f Tw:%d total_time_up:%f
DOWN cpu:%d core_idx:%d Ns:%f Ts:%d total_time_down:%f
cpu%d: core_idx: %d uptime: %f downtime %f
cpu%d: core_idx: %d Nw: %f, Tw :%d, Ns: %f, Ts: %d, util_high_and:%d
cpus_up: %d cpus_down: %d thermal_mask: 0x%x
Example2:
~/ProprietaryLibCleaner/dbs/system/lib/hw contains sensors.msm8960.so which is also a regular text file since its a patch, it only has a simple reference inside (but a very annoying one)
Code:
mCompEngine is NULL
These 2 examples are listed in the shell script, when more is added it is automatically appended in the 'database'
Last but not least is the patching process which is done on a 'fail-safe' method, it first checks whether its actually applicable before making any changes, if not it will skip it, so it won't make your files unusable
Instructions for normal usage:
1. Download latest release
2. Unpack somewhere on PC
3. Run script with ./PLC
4. Install ADB + ADB USB Driver if not installed
5. Install Swiss File Knife on Phone if not installed
6. View targets & patches
7. Set target and patch
8. Profit
Downloads
Latest version: v0.7 - here or here
Github page:
https://github.com/broodplank/ProprietaryLibCleaner
Additional Credits:
stahlworks - Swiss File Knife
Changelog
Version 0.7 - 19/04/2014
- updated adb downloading method
Version 0.6 - 19/04/2014
- updated lines of mpdecision
- updated compatibility with quotes ( ' ' ) inside lines, was causing thermal-engine patch fail
Version 0.5 - Initial Release - 15/04/2014
How to make a template / submit a patch
You can get readable strings from file by using 'strings' command.
When using the new beta method (auto submit by using my raspberry pi)
Enter:
1. Your XDA username
2. path to file
3. lines to be patched
If this tool gets abused it will INSTANTLY be taken offline!
http://plcsubmit.broodplank.net/
By posting it as a reply to this topic:
TEMPLATE said:
/path/to/bin/or/lib
Code:
string 1
string 2
string 3
string 4
Click to expand...
Click to collapse
I will merge it on github then.
By Github pull merge request
For the more advanced developer:
./dbs/system/path/to/bin/or/lib said:
string 1
string 2
string 3
string 4
Click to expand...
Click to collapse
But then in the git folder
Make a file (same name as target) in right folder with lines inside the file that need to be hexxed.
Then make a merge pull request on Github!
another one just in case (reserved)
Wow I just noticed the topic was horribly formated! tip to everyone DO NOT USE THE WYSIWYG Editor!
The Sensors get knocked out when you silence sensors.msm8960.so
imanoob said:
The Sensors get knocked out when you silence sensors.msm8960.so
Click to expand...
Click to collapse
I have had this once, it was the cause of a invalid hex replacement. but I have been using the hexxed sensors.msm8960.so for a while now and in the app sensorbox everything is showing, compared to nothing showing when a failed hexx is done. please show me the results of sensorbox.
it should work just fine.
Wow this looks promising .
I've been doing some little hex edits on some system binarys, will try this out .
Regards
superdragonpt said:
Wow this looks promising .
I've been doing some little hex edits on some system binarys, will try this out .
Regards
Click to expand...
Click to collapse
Thank you , I hope it becomes useful for you
Is it possible to run the patches directly on the phone via terminal emulator or adb shell (assuming all prerequisites like adb, drivers, and sfk are installed)?
First of all, thanks a lot for these scripts, and for the tutorial you provided in your other thread on how to patch them manually. The script seemed to work just fine but for some reason the resulting binaries would be a few bytes smaller than the original file and so I'd get an error that would say something about ELF header magic ( can't remember the exact error message) and they could not be executed. I decided to try to create my own script and finally managed to get something working. My original script is run from the phone itself, but I tried to port it to yours as a dbs/patcher script replacement, keeping as much of the original functionality as I could. It seems to work, but could maybe use some polishing. I thought you might be interested in it, as it does not require any installation of extra binaries (it uses grep and dd to perform the functions of sfk). Feel free to use any of it how and where you might see fit. To use it just put it into dbs in place of the original patcher script.
Update: The patcher in patcherv2.zip now correctly restores the file permissions.
As an interesting side note I noticed that with unmodified files, my CPU usage while the phone is otherwise idle and only a single core is active, is reported as 3% with periodic spikes every few seconds of up to 10%. Once the strings are cleaned from the files, the CPU consistently reports usage of 0% or 1%, and the spikes are completely nonexistent.
Chahk said:
Is it possible to run the patches directly on the phone via terminal emulator or adb shell (assuming all prerequisites like adb, drivers, and sfk are installed)?
Click to expand...
Click to collapse
yes with some modification to the code it can do that. but you will have to convert it to real sh script instead of bash. it's somewhat different.
bsimpson1 said:
First of all, thanks a lot for these scripts, and for the tutorial you provided in your other thread on how to patch them manually. The script seemed to work just fine but for some reason the resulting binaries would be a few bytes smaller than the original file and so I'd get an error that would say something about ELF header magic ( can't remember the exact error message) and they could not be executed. I decided to try to create my own script and finally managed to get something working. My original script is run from the phone itself, but I tried to port it to yours as a dbs/patcher script replacement, keeping as much of the original functionality as I could. It seems to work, but could maybe use some polishing. I thought you might be interested in it, as it does not require any installation of extra binaries (it uses grep and dd to perform the functions of sfk). Feel free to use any of it how and where you might see fit. To use it just put it into dbs in place of the original patcher script.
Update: The patcher in patcherv2.zip now correctly restores the file permissions.
As an interesting side note I noticed that with unmodified files, my CPU usage while the phone is otherwise idle and only a single core is active, is reported as 3% with periodic spikes every few seconds of up to 10%. Once the strings are cleaned from the files, the CPU consistently reports usage of 0% or 1%, and the spikes are completely nonexistent.
Click to expand...
Click to collapse
You're welcome. This may be caused because the strings are replaced with "nothing", It might be a good idea for me to count the numbers (in hex) of the string and then replace it all with zero's instead. I think this creates more compatibility, but I'm not 100% sure of that.
Some files indeed get corrupted by hexxing them, (at least when removing strings), maybe putting zero's there would fix it. as I am not advanced in hex at all I honestly don't know before I have tested it.. anyways, the binary templates that are included should not corrupt the files.
I really appreciate you have put this effort in updating the patcher. It really looks awesome, I have not tested it yet, but if it really can replace sfk consistently It will be great. I will take a look at the script and I am certainly interested in it! The script looks pretty advanced to me actually, for example that regex is just badass!
I think I will integrate your patcher and generate an option that lets you choose between your method (local patching, on PC) and my method (remote patching, on phone), that way users could choose what they prefer. Of course I will add your credits to the top because you made it. not me
I will look into this very soon, for the meanwhile you could create merge pull requests on the git if you'd like.
And btw I am really glad to hear that removing the strings actually lowered the cpu usage , that's a great thing! and is absolutely the goal of the script next to making it more readable ^^
Thanks a lot for your wisdom and effort on this patcher
broodplank1337 said:
yes with some modification to the code it can do that. but you will have to convert it to real sh script instead of bash. it's somewhat different.
You're welcome. This may be caused because the strings are replaced with "nothing", It might be a good idea for me to count the numbers (in hex) of the string and then replace it all with zero's instead. I think this creates more compatibility, but I'm not 100% sure of that.
Some files indeed get corrupted by hexxing them, (at least when removing strings), maybe putting zero's there would fix it. as I am not advanced in hex at all I honestly don't know before I have tested it.. anyways, the binary templates that are included should not corrupt the files.
I really appreciate you have put this effort in updating the patcher. It really looks awesome, I have not tested it yet, but if it really can replace sfk consistently It will be great. I will take a look at the script and I am certainly interested in it! The script looks pretty advanced to me actually, for example that regex is just badass!
I think I will integrate your patcher and generate an option that lets you choose between your method (local patching, on PC) and my method (remote patching, on phone), that way users could choose what they prefer. Of course I will add your credits to the top because you made it. not me
I will look into this very soon, for the meanwhile you could create merge pull requests on the git if you'd like.
And btw I am really glad to hear that removing the strings actually lowered the cpu usage , that's a great thing! and is absolutely the goal of the script next to making it more readable ^^
Thanks a lot for your wisdom and effort on this patcher
Click to expand...
Click to collapse
I'm glad to help! I'm not very familiar with binary files myself. I recently noticed that it's possible to simply pass the flag '-o' to the 'strings' command to print the byte offset along with each string! I think that would be a lot more reliable than using grep, not to mention faster. Since that's also how other users will be getting the strings to use for the templates it seems like a very good option also. I'll see if I can come up with a revised version
Unfortunately, the version of strings that's provided by busybox on my phone doesn't have the -o option, but i managed to find a version of the real strings binary with -o support that runs on android, so it could be very possible to eventually make a flashable zip or version that runs on the phone: View attachment strings-armeabi.zip (can't seem to remember where i found this)
bsimpson1 said:
I'm glad to help! I'm not very familiar with binary files myself. I recently noticed that it's possible to simply pass the flag '-o' to the 'strings' command to print the byte offset along with each string! I think that would be a lot more reliable than using grep, not to mention faster. Since that's also how other users will be getting the strings to use for the templates it seems like a very good option also. I'll see if I can come up with a revised version
Unfortunately, the version of strings that's provided by busybox on my phone doesn't have the -o option, but i managed to find a version of the real strings binary with -o support that runs on android, so it could be very possible to eventually make a flashable zip or version that runs on the phone: View attachment 2810739 (can't seem to remember where i found this)
Click to expand...
Click to collapse
Me neither hehe, I just tested the -o flag and you're right , it works, it returns idd the byte offset. that is nice. and it would be faster for sure, dd'ing some bytes to a certain area has to be faster then grep/replace. But my concern is that maybe the byte offsets are not the same on files, which could easily corrupt the binary if it doesn't match the template. And how do you calculate how many bytes should be flashed to the byte offset? or you just want to jump to the offset and then replace hex? i am not sure which is better honestly. Anyways, I appreciate it that you want to come up with a revised version maybe
Oh it didn't? Do you perhaps have an old version of busybox? I have "BusyBox v1.21.1-kk bionic" and for me it works in android (adb shell, with for example "busybox strings -o /system/bin/mpdecision"), so there wouldn't be need for a seperate binary, just an updated busybox.
Anyways, before we could seriously replace the method we need to do a lot of testing ;p
@broodplank1337 - is this script still being maintained, if not, are there any other alternatives?

[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.

[TUT] Remove default launcher on Amazon Fire 8" & 10" (NO ROOT)

I never finished this, please use Launcher Hijacker v3+ as it works much much better!
EDIT 09/23/16
I finally found a permanent solution to how to change fire launcher on the Amazon Fire without root. It works on any version (FireOS 5.3.1) on any tablet variant (7, HD 8, HD 10 etc...).
You can read the detailed tutorial at http://forum.xda-developers.com/ama...-remove-default-launcher-amazon-fire-t3288310 but basically you run one command, must be done after reboot currently via adb shell:
Noval Launcher on Amazon Fire no-root:
Code:
nohup logcat -c; logcat | grep --line-buffered 'flg=0x10200000 cmp=com.amazon.firelauncher/.Launcher' | while read line; do am start com.teslacoilsw.launcher/.NovaLauncher; done &
That's it. Once you paste that into your adb shell you're done; you now have a default launcher programmatically set via ADB.
Optionally, you can install the modded firelauncher.apk so you can finally delete it without root .
(this is optional, you wont have any launcher after doing this! backup your old APK!!)
Code:
adb install -r -d com.amazon.firelauncher.apk
... as you can now see this will -r reinstall and -d downgrade the launcher, causing it to crash and never open.
Thanks for your support guys, I love android!
EDIT:
I have updated with a new method that is much better, the only negative to this new method is when you hit the home button, for a brief moment you see the firelauncher. Performance, speed, and bugs are perfect.
Just paste this code in adb shell, I'm working on setting up nohup to work with it, when you close adb it will stop working.. Going to bed for now though.
Code:
#!/bin/bash
am monitor | while read -r line; do
if [[ $line == *"firelauncher"* ]]
then
am start [B]com.newlauncher.launcher[/B]
fi
done
I'm new to the whole Android scene, and recently I had acquired an Amazon Fire HD 8. The only complaint about this tablet is the lack of Google Play and the horrible firelauncher. There is currently no root options available for the Fire HD modles 8 & 10, so I have spent the time to develop a temporary workaround.
Please take a quick look at the developmental thread I previously created so we can collaborate to make a more efficient version of this:
http://forum.xda-developers.com/hd8...zon-fire-hd-8-10-remove-firelauncher-t3286646
Disclaimer:
If you plan on installing new applications/packages while this script is running you may have a hard time. Installing packages may take 2-10 minutes, or maybe not at all!
If you experience any problems you can undo everything by running the undo script attatched (unix), or by typing "adb shell ps | grep /system/bin/sh", you will see anywhere from 2-10 processes listed. For each type "adb shell kill -9 <pid>", pid would be the process ID, should be the first number you see on each line.
There is a small chance when you press the home button that it will load the regular firelauncher, do not fret, try again and it will go to whichever launcher you previously selected.
Performance may be slightly altered, if it becomes too bad to use try adjusting the script and change the interval at which it loops (set to 20 by default).
This is an alpha experiment, and I am a noob with Android so please bare with me
This is a noobish approach to disabling the firelauncher (com.amazon.firelauncher.apk), please do not judge it, this is also my first time releasing something for Android.
If you are using a unix operating system (like Linux or Mac), I have compiled a script that does the work for you! Windows users will have to wait and do it manually since I am unfamilar with batch (would someone like to help with this?)
Automatic Tool (easy, linux, mac only)
Step One:
Download the two script attachments:
remove_default_launcher.sh - disables amazon's firelauncher
re-endable_firelauncher(undo).sh - reverts the process, if you have any issues
Step Two:
Run the following commands to make the scripts executable:
Code:
chmod +x remove_default_launcher.sh
chmod +x re-endable_firelauncher(undo).sh
Here is a video showing you how to do this next step:
https://www.youtube.com/watch?v=1IVOa048UbY
Run the tool to remove amazon's nasty launcher!
Code:
./remove_default_launcher.sh
Step Three:
The script should automatically do everything, when it's done, check your Fire. Keep pressing the home button and switching between applications until you get the "Change default launcher" dialogue, make sure you have an alternative launcher installed beforehand or else you won't have a launcher! When it's all working how it should be go to step four!
Step Four:
Simply exit out of your terminal window, do not type anything, just exit ADB. The script will continue running!
This is what a successful window looks like, whenever you have confirmed it is working, close out of the ADB window and end that process.
{
"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"
}
Manually (harder, windows)
Step One:
Open up a new ADB shell window and type
Code:
adb shell
Step Two:
Once you are in the shell window, simply copy and paste this line of code and press return. It is just a simple bash script that loops the command "install -r -d "/system/priv-app/com.amazon.firelauncher/com.amazon.firelauncher.apk"" which will reinstall the firelauncher repeatedly, which temporary uninstalls it.
Code:
#!/system/bin/sh
nohup
while :
do
kill $!
sleep 1 & pm install -r -d "/system/priv-app/com.amazon.firelauncher/com.amazon.firelauncher.apk" & sleep 20; kill $!
kill $!
done &
exit
#press enter now
After pressing enter, you can watch it go to work, or you can close out of the adb window and unplug your device, it will continue to run until you kill the shell processes or reboot the device. Make sure you have an alternative launcher already installed so it can easily be set as default. EDIT: Reboot may not reset it, which is cool but could be annoying. To turn off this wonderful feature open up adb shell and use "ls | grep shell" and kill using "kill <pid>" all releated processes to /bin/shell or whatever. It may take up to a minute to reset.
If you have any issues at all please comment and I will send you a private message with detailed instructions catered to your specific issue!
If you are a dev, take a look at my unix auto-install script, it may help you figure it out yourself as well. I need someone who understands batch to help me write a windows version .
I literally spent about 45 minutes working on this noobish approach, so if you find bugs or want to modify the script, simply post in the comments your version and why you think it is more efficient. If you want to help make a dedicated and more efficient approach to this, check out the development thread here (there are alternative methods here too):
http://forum.xda-developers.com/hd8...zon-fire-hd-8-10-remove-firelauncher-t3286646
This appears to be a very stable system actually, I recommend everyone does this to the Fire HD tablets!
I hope this helps someone, if this helps you please give me a thanks so I know it
Just tried this on my HD 8. Works like a charm! Haven't noticed much of a performance decrease as I figured would happen. On occasions when I press home it likes to hang at a black screen until I press home again. Other than that its perfect. Thanks!
ZenPowerBuilder said:
Just tried this on my HD 8. Works like a charm! Haven't noticed much of a performance decrease as I figured would happen. On occasions when I press home it likes to hang at a black screen until I press home again. Other than that its perfect. Thanks!
Click to expand...
Click to collapse
I am working on a better version, I have noticed some performance issues that irritate me.. I also made the scripts better much better.
I am glad I was able to help you .
I have updated with a new method that is much better, the only negative to this new method is when you hit the home button, for a brief moment you see the firelauncher. Performance, speed, and bugs are perfect.
Just paste this code in adb shell, I'm working on setting up nohup to work with it, when you close adb it will stop working.. Going to bed for now though.
Code:
#!/bin/bash
am monitor | while read -r line; do
if [[ $line == *"firelauncher"* ]]
then
am start [B]com.newlauncher.launcher[/B]
fi
done
nyln said:
I have updated with a new method that is much better, the only negative to this new method is when you hit the home button, for a brief moment you see the firelauncher. Performance, speed, and bugs are perfect.
Just paste this code in adb shell, I'm working on setting up nohup to work with it, when you close adb it will stop working.. Going to bed for now though.
Code:
#!/bin/bash
am monitor | while read -r line; do
if [[ $line == *"firelauncher"* ]]
then
am start [B]com.newlauncher.launcher[/B]
fi
done
Click to expand...
Click to collapse
Has anyone had any luck finding a way to keep this script running? I am experimenting with Python..
I have not had too much time to work on this, but all the puzzle pieces are here if anyone wants to make a permanent solution.
nyln said:
I have not had too much time to work on this, but all the puzzle pieces are here if anyone wants to make a permanent solution.
Click to expand...
Click to collapse
I have used your manual method and during the execution of this process I could with the command "adb shell pm hide com.amazon.firelauncher" the amazon firelauncher set as permanent hidden. After that I could set the Nova Launcher as a standard launcher. As a substitute for home button (was not working) I set in the "overlays app" the Nova launcher as a foreground application. So I can select the foreground Nova launcher symbol as a home replacement. For me is that a good workaround.
schr01 said:
I have used your manual method and during the execution of this process I could with the command "adb shell pm hide com.amazon.firelauncher" the amazon firelauncher set as permanent hidden. After that I could set the Nova Launcher as a standard launcher. As a substitute for home button (was not working) I set in the "overlays app" the Nova launcher as a foreground application. So I can select the foreground Nova launcher symbol as a home replacement. For me is that a good workaround.
Click to expand...
Click to collapse
The package manager requires root or superuser in order to hide/disable the firelauncher package properly. You probably have the 7" model.
nyln said:
The package manager requires root or superuser in order to hide/disable the firelauncher package properly. You probably have the 7" model.
Click to expand...
Click to collapse
That is true, that the package manager requires root or superuser in order to hide/disable the firelauncher package.
But there must be a "time gap" when there is running in a first adb window (task) the following adb shell script
!/system/bin/sh
nohup
while :
do
kill $!
sleep 1 & pm install -r -d "/system/priv-app/com.amazon.firelauncher/com.amazon.firelauncher.apk" & sleep 20; kill $!
kill $!
done &
exit
and in a second adb window (task) is executed the "adb shell pm hide com.amazon.firelauncher" command.
Remark: I must multiple times repeat this command until I get the "TRUE" confirmation.
I has this done on my HD8 ( 5th generation) model. wiht the firmware 5.1.1.
nyln: awesome job!
now i bought this tablet for my son (6 yrs old) and the "child profiles" suck since they do not allow non amazon apps to be shown there. So having the nova launcher is the next best thing since i can hide the apps i dont want him touching. Problem is this if we are out somewhere and an app crashes the tablet, i have no way to get nova back on.
Is there a way to put this script on the tablet and run it that way?
5.1.4?
It is not working on 5.1.4?
XJimmyCaoQ99X said:
It is not working on 5.1.4?
Click to expand...
Click to collapse
You can downgrade to 5.1.2
@nyln can't wait to try this when i get home, can you install widgets on nova launcher now?
Sent from my HTC 10 using XDA Labs
ahac85 said:
@nyln can't wait to try this when i get home, can you install widgets on nova launcher now?
Sent from my HTC 10 using XDA Labs
Click to expand...
Click to collapse
How it actually works:
First of all, corrupting the firelauncher will prevent your system from loading it, which saves memory and cpu resources on these low-end devices. After that, in order to replace the system launcher I actually just intercept the home activity and allow a launcher of your choice to open. So it's really just a clean hack you won't notice. Only downside currently is the fact that it takes about 100ms for your home button to actually take you to the launcher of your choice.
tldr: It should work perfectly normally with widget.
XJimmyCaoQ99X said:
It is not working on 5.1.4?
Click to expand...
Click to collapse
It works on all versions, including 5.1.4. In fact, this will work on ANY device with ANY operating system. If you have 5.1.4 why don't you just root?
Can someone tell me if this works after reboot?
@nyln when i try to execute the script i get "syntax error: 'while' unmatched"
I saved the script to a file on my fire HD 8 and executed it with sh filename.sh, because with adb shell i pasted the text but i couldn't press enter to execute it. It just entered a new line to the script.
Here is how it looks:
aldileon said:
@nyln when i try to execute the script i get "syntax error: 'while' unmatched"
I saved the script to a file on my fire HD 8 and executed it with sh filename.sh, because with adb shell i pasted the text but i couldn't press enter to execute it. It just entered a new line to the script.
Here is how it looks:
Click to expand...
Click to collapse
The image looks good. You may need unix for this or cygwin.
But as i understood, the script runs on the fire tab? So why should it matter what OS I am pushing the script with? Or why should Unix work better than windows?
I'm not totally naive to the command line, nor to customizing android installations. This is my first experience with the Amazon tablets; I have the Fire HD8 6th-gen. I'm running the 5.3.1.1 firmware. I tried entering the command in the top post, entered into a terminal emulator, and it didn't seem to return anything -- no error, no nothing. Still having the same issue; I can run NovaLauncher and it's fine until I get into a different app or hit home, then it goes back to Amazon's junk launcher... am I doing something wrong in the terminal?

[WindowsTool] APKSharp: De-bloat, view full details & manage APKs on any Android

APK# v1.4
==================================================
Copyright (c) 2020 Captain Majid
Chat with me on Discord: https://discord.gg/F3Ds69M#android
==================================================
{
"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"
}
​Description:
==============
Quickly de-bloat, view full details & manage APKs on any Android device/emulator, no other app do/show all that.
Features:
==========
Easily know what app works on what device/emulator by comparing Android cpu architecture to the app's supported architectures (arm, arm64-v8a, x86, etc...), and also by comparing the minimum Android ver required to run an app.
Backup multiple apks at once.
Install multiple apks at once.
Quick-infos of multiple apks at once.
Disable multiple apks at once. (for Android >= 6.0 only)
Uninstall multiple apks at once, including system apps (for Android >= 6.0 only, this doesn't require root, it just uninstall it for the current user, use this to remove unnecessary pre-installed junkware/bloatware system apps).
Push/pull files/folders to/from your Android even when its on Charge mode or connected wirelessly.
Quickly search for a package name without waiting for the whole list to be ready. (really time-saving feature)
Displaying current WiFi & IP with the ability to connect to the Android device wirelessly, no other tool automates that that easy.
Infos mirrored/logged to Excel files by default, also you can save custom screen contents as columns to Excel file for later reference, simply press Alt + Space -> Edit -> Select All/Mark -> Enter -> then paste the clipboard in a text file but change the extension to .csv
APK names encoded in UTF8 text to Excel file format (for non-Latin letters like Arabic, Japanese, Russian, etc...), you can also use an advanced cmd emulator (like mini cmder, that can display these characters on console screen).
Requirements:
==============
Windows ADB drivers: there is no generic solution for all Android manufacturers, even Google solutions mightn't work for your device: https://developer.android.com/studio/run/oem-usb#InstallingDriver, also remember that Windows disables installation of unsigned drivers unless you enable it manually on Windows boot.
So the generic solution is: to get https://sdi-tool.org/SDI_Update.torrent we only need to select \drivers\DP_zAndroid_*.7z, maybe also DP_Telephone_*.7z, & maybe DP_MassStorage_*.7z for MTP or ADB if you use Windows XP, you can also try this solution if the previous didn't work.
.NET 4.0 (if you've Windows older than 8).
Enable "USB Debugging" on your Android device/emulator.
Screenshots:
=============
Videos:
========
While searching on Google, I found this fan-made video, [Perfect Tool] ? :fingers-crossed: uhmmm... but I'm not done yet .
Review & Download:
===================
https://www.softpedia.com/get/System/System-Info/APK.shtml
Donations:
I don't need donations, just made this tool to ease the pain on users that aren't able to root/own their Android anymore, found it useful ? spread the word !
Why didn't you put it in the Play Store?
S.l.v.n said:
Why didn't you put it in the Play Store?
Click to expand...
Click to collapse
Its not an Android app, It's a Windows app written in C# no app/apk is installed on Android at all.
@Zer0De8th Sorry for the late reply to your pm, yes I'm going to add an option to disable a package later and some other features, hopefully not more than a week from now, thanks for the feedback.
You can also join me here if you're on Discord: https://discord.gg/F3Ds69M
Moataz Bellah said:
@Zer0De8th Sorry for the late reply to your pm, yes I'm going to add an option to disable a package later and some other features, hopefully not more than a week from now, thanks for the feedback.
You can also join me here if you're on Discord: https://discord.gg/F3Ds69M
Click to expand...
Click to collapse
Thanks for considering my request.
Updated to v1.3
Donations:
I don't need donations, just made this tool to ease the pain on users that aren't able to root/own their Android anymore, found it useful ? spread the word !
While searching on Google, I found this fan-made video, [Perfect Tool] ? :fingers-crossed: uhmmm... but I'm not done yet .

			
				
Moataz Bellah said:
Windows ADB drivers: there is no generic solution for all Android manufacturers, even Google solutions mightn't work for your device: https://developer.android.com/studio/run/oem-usb#InstallingDriver, also remember that Windows disables installation of unsigned drivers unless you enable it manually on Windows boot.
Click to expand...
Click to collapse
I don't know what kind of solution is in that torrent file (maybe again koush one that distributes illegally MS sign program makecert.exe, like devcon.exe it's not allowed really. But then again also Intel and Amlogic has done/does it, so who cares...) but here is another Windows ADB driver generic solution, signed and all... by me
Yet Another Universal ADB Driver Package and adbupdater for Windows
:laugh::silly:
MesterPerfect said:
Click to expand...
Click to collapse
Thanks for the feedback, this error happens when screen resolution (width) is <= 1024, so make it anything above 1024x786 and the problem should be gone, this will be fixed in the next release.
CXZa said:
I don't know what kind of solution is in that torrent file (maybe again koush one that distributes illegally MS sign program makecert.exe, like devcon.exe it's not allowed really. But then again also Intel and Amlogic has done/does it, so who cares...) but here is another Windows ADB driver generic solution, signed and all... by me
Yet Another Universal ADB Driver Package and adbupdater for Windows
:laugh::silly:
Click to expand...
Click to collapse
Thanks for sharing your project with us, you also seem to be a fan of emojis, right?
Well, the torrent is a collection of drivers called Snappy Driver Installer, it's almost the same as DriverPack Solution, both are trusted by thousands of people, but SDI has more features, flexible, and you can just update/download 1 driver when you want, not the whole pack, I don't think alot of people cares if the driver is signed by Microsoft or not as long as it works, does your solution covers all Android manufacturers ?
The phenomenal v1.4 update is here, why I say phenomenal ? well, I checked other similar adb-based tools on the web, and most of them are not just poor in functionalities compared to APK#, but paid/require donations to unlock very basic features, which is annoying.
For example, I didn't find any tool to automate the wireless connection between Windows & Android as easy as APK# (even awesome tools like https://github.com/Genymobile/scrcpy doesn't), also the tool does not make you wait to load all the packages infos anymore, you just use the Quick Search feature, and save your day.
Enjoy
Moataz Bellah said:
So the generic solution is: to get https://sdi-tool.org/SDI_Update.torrent we only need to select \drivers\DP_zAndroid_*.7z, maybe also DP_Telephone_*.7z, & maybe DP_MassStorage_*.7z for MTP or ADB if you use Windows XP.
Click to expand...
Click to collapse
Moataz Bellah said:
does your solution covers all Android manufacturers ?
Click to expand...
Click to collapse
Yep, and future manufactures too if the drivers don't change too much. And it isn't around 130MB like those files that you suggest downloading by using that torrent.
Moataz Bellah said:
The phenomenal v1.4 update is here
< --snip -->
Enjoy
Click to expand...
Click to collapse
Like how? 1.3 is available, not 1.4... just saying...
CXZa said:
Yep, and future manufactures too if the drivers don't change too much. And it isn't around 130MB like those files that you suggest downloading by using that torrent.
Like how? 1.3 is available, not 1.4... just saying...
Click to expand...
Click to collapse
Sorry for that delay, I was waiting for Softpedia to re-test/re-scan the update, I wanted the source of download to be them for additional trust, and to monitor the download count easily, now APKSharp v1.4 is ready. I also added your ADB drivers solution to the main post.
Moataz Bellah said:
Sorry for that delay, I was waiting for Softpedia to re-test/re-scan the update, I wanted the source of download to be them for additional trust, and to monitor the download count easily, now APKSharp v1.4 is ready. I also added your ADB drivers solution to the main post.
Click to expand...
Click to collapse
Okay, great, have to check what's this phenomenality is all about...
My driver package's phenomenality is maybe questionable but it usually does its ****...
Scrolling and filter issues
Overall appreciate your program. Very helpful and useful.
(Currently using ver 1.4 of your apk sharp program on the latest version of windows 10).
Having said this, there seems to be some issues with your program or perhaps
I am misunderstanding its use in certain places which hopefully you can clarify.
1. Is the “quick search” feature the same as your filter except it’s used at the very beginning to preclude the wait period as the app lines are created but then after that the filter is basically one’s search function?
2. Filter option issues:
Don’t understand how the filter works?
Example: If I type in the line number say 205 (of line 205; wuffy player etc.) no result is shown.
Any reason why typing in a number as my filter/search phrase won’t work?
If I type in “wuffy player” (without the quotes) a resulting line is shown as expected.
If I select the “wuffy player” phrase then do ctrl-c to copy then a ctrl-v to paste, its pasted correctly on the filter line but no result is subsequently shown so I am always forced to MANUALLY write in the search phrase which is NOT very helpful.
I even tried doing the ctrl-c OUTSIDE of your program using one of the csv files your program creates, and then tried the ctrl-v to paste in your program with no result. It is as if the ctrl-c or ctrl-v confuses your program.
I think you really need to resolve this because no one wants to always have to manually type in their search phrase every single time.
3. OR’s and ANDS’s in filter phrase – how to?
How do you do OR’s and AND’s with your filter? I tried “search phrase 1” “search phrase 2” (space in between, also tried commas, semi colons etc. in between the phrases) to execute an AND search but got no results.
For an OR’d phrase I tried “search phrase 1” | “search phrase 2” using the “|” as the separator and tried many other chars for the separator char but all yielded no results. Can you please explain how to do OR’s and AND’s when using your filter option?
4. Unnecessary scrolling of existing app lines:
After all the app lines are shown and one sorts say by name using option key ”1” for name, if one enters any char key like say “t” that is not a valid option key the entire app lines are unnecessarily re-scrolled which is quite annoying and provides no added value in doing so. The screen should remain as is with the invalid option char simply ignored.
Also, when a valid option key is pressed and its results are shown, the last valid char is seen on the line so if one backspaces which is a NATURAL user instinct to subsequently erase that char in order to select the next valid char option, all the existing app lines again get unnecessarily scrolled because the backspace just happens to be an invalid option selection char.
This is confusing because for a next valid selection to work, one needs to type in a valid option char at the same time a previous valid selection still remains on the line. This is not a natural user interaction.
Thanks
Ed R.
Burgrio said:
put it in the play store
Click to expand...
Click to collapse
No, I won't :laugh:
ed_ray said:
Overall appreciate your program. Very helpful and useful.
(Currently using ver 1.4 of your apk sharp program on the latest version of windows 10).
Having said this, there seems to be some issues with your program or perhaps
I am misunderstanding its use in certain places which hopefully you can clarify.
1. Is the “quick search” feature the same as your filter except it’s used at the very beginning to preclude the wait period as the app lines are created but then after that the filter is basically one’s search function?
2. Filter option issues:
Don’t understand how the filter works?
Example: If I type in the line number say 205 (of line 205; wuffy player etc.) no result is shown.
Any reason why typing in a number as my filter/search phrase won’t work?
If I type in “wuffy player” (without the quotes) a resulting line is shown as expected.
If I select the “wuffy player” phrase then do ctrl-c to copy then a ctrl-v to paste, its pasted correctly on the filter line but no result is subsequently shown so I am always forced to MANUALLY write in the search phrase which is NOT very helpful.
I even tried doing the ctrl-c OUTSIDE of your program using one of the csv files your program creates, and then tried the ctrl-v to paste in your program with no result. It is as if the ctrl-c or ctrl-v confuses your program.
I think you really need to resolve this because no one wants to always have to manually type in their search phrase every single time.
3. OR’s and ANDS’s in filter phrase – how to?
How do you do OR’s and AND’s with your filter? I tried “search phrase 1” “search phrase 2” (space in between, also tried commas, semi colons etc. in between the phrases) to execute an AND search but got no results.
For an OR’d phrase I tried “search phrase 1” | “search phrase 2” using the “|” as the separator and tried many other chars for the separator char but all yielded no results. Can you please explain how to do OR’s and AND’s when using your filter option?
4. Unnecessary scrolling of existing app lines:
After all the app lines are shown and one sorts say by name using option key ”1” for name, if one enters any char key like say “t” that is not a valid option key the entire app lines are unnecessarily re-scrolled which is quite annoying and provides no added value in doing so. The screen should remain as is with the invalid option char simply ignored.
Also, when a valid option key is pressed and its results are shown, the last valid char is seen on the line so if one backspaces which is a NATURAL user instinct to subsequently erase that char in order to select the next valid char option, all the existing app lines again get unnecessarily scrolled because the backspace just happens to be an invalid option selection char.
This is confusing because for a next valid selection to work, one needs to type in a valid option char at the same time a previous valid selection still remains on the line. This is not a natural user interaction.
Thanks
Ed R.
Click to expand...
Click to collapse
Overall thank you so much for this highly constructive feedback :victory:
1. & 2. "Quick Search" only searches for a package name (not app name) inside user/sys apps, so to search for "Google Play Store" app, you need to type any part of the package name which is "com.android.vending", so just typing "vend" will do the job.
"Filter" will search in the current cached list of apps for an EXACT phrase like: "cpu arch" or "app name" or "package name", so just typing "arm64-v8a" or "play store" or "vend" will give the same result, but you can't use more than 1 filter in the same time, so you can't say "play store arm64-v8a", you also don't need to specify a full word/phrase, just typing "sto" or "pla", is enough to get "Google Play Store".
3. Sorry if you get lost in this, the default filter is an EXACT phrase like I said above, if you find it necessary, I can add "OR" & "AND" filter later.
4. I've added a small update here to prevent apps relisting when an unsupported character is provided.
Please also note that with sorting, pressing the digits from 1 to 5 two times will reverse the sorting method (ascending/decending), so you can get the biggest/smallest app in size at the end by pressing '4' two times.
I'll add this in the main post later, thanks again and have a nice day.
Ooh, this looks like just what I needed to remove bloatware (without touching the necessary stuff). Two questions:
1. Does this work for a samsung galaxy s7 (G930T)?
2. How do I get started? (Instructions on how to use would be nice.)
Hopefully this works for my device (I tried using ADB to uninstall stuff, but kept hitting issues (and reset several times), so now it's sitting in a new (unopened) state. Important stuff is backed up before I started the uninstalling.
pyereciae2788 said:
Ooh, this looks like just what I needed to remove bloatware (without touching the necessary stuff). Two questions:
1. Does this work for a samsung galaxy s7 (G930T)?
2. How do I get started? (Instructions on how to use would be nice.)
Hopefully this works for my device (I tried using ADB to uninstall stuff, but kept hitting issues (and reset several times), so now it's sitting in a new (unopened) state. Important stuff is backed up before I started the uninstalling.
Click to expand...
Click to collapse
As long as
Code:
adb devices
detects your device, you're good to go.
1. It should work for any Android device/emulator, if you have an issue, let us know, screenshot it, etc...
2. Just follow the on-screen instructions and press the corresponding keys, maybe watch the video in the 1st post.
AHHH~
This worked better than I expected (especially the part where it lists the package name along with the file name). Also, thanks for color-coding everything! I can finally tell what something is, the file name, version, etc. It's also easier than using ADB for uninstalling, as it's just searching for the names, filtering with "6" + Enter, then uninstalling with "u" + Enter then the numbers with plus signs in between (e.g. 1+2+3). Much faster and simpler than "pm uninstall -k --user 0 [FILE NAME]" where [FILE NAME] is what the file name is (e.g. com.nimblebit.pocketfrogs for Pocket Frogs).
Now I can sleep without worrying to much...
I think one error is when I tried to undo uninstalling but it just gives "Uninstalled system apps:" then moves on as normal without the app being re-installed...

Categories

Resources