Accessing a variable. - Xposed Framework Development

Hello guys!
I'm new to this Xposed things and I'm trying to create a module and I have a question.
I found in "com.android.systemui.recents.RecentsActivity" the method "addSearchBarAppWidgetView".
this method is adding Google's search bar to the "Recents" window.
In "addSearchBarAppWidgetView" method there is a variable called "mSearchAppWidgetHostView".
My question is, How can I get control on this variable and change it's place for example?

Wassupdog said:
Hello guys!
I'm new to this Xposed things and I'm trying to create a module and I have a question.
I found in "com.android.systemui.recents.RecentsActivity" the method "addSearchBarAppWidgetView".
this method is adding Google's search bar to the "Recents" window.
In "addSearchBarAppWidgetView" method there is a variable called "mSearchAppWidgetHostView".
My question is, How can I get control on this variable and change it's place for example?
Click to expand...
Click to collapse
what do you mean for "place"?
you can access it with reflection, or using
Code:
XposedHelpers.getObjectField(Object class, String variableName)
Then you will be able to use the methods of this variable

Andre1299 said:
what do you mean for "place"?
you can access it with reflection, or using
Code:
XposedHelpers.getObjectField(Object class, String variableName)
Then you will be able to use the methods of this variable
Click to expand...
Click to collapse
Thanks!
Exactly what I needed!

Related

[Q] Advanced Parameters for Image Slideshow

Hey everyone i'm looking to make Zooper cycle through a few different bitmaps. I was thinking that the only way I could do it was based on the minute in hour but i'm not sure how to write out the parameter. Any help would be appreciated!
czonin said:
Hey everyone i'm looking to make Zooper cycle through a few different bitmaps. I was thinking that the only way I could do it was based on the minute in hour but i'm not sure how to write out the parameter. Any help would be appreciated!
Click to expand...
Click to collapse
Checkout this thread: http://forum.xda-developers.com/showthread.php?t=2546483. It should give you the information you need
kwerdenker said:
Checkout this thread: http://forum.xda-developers.com/showthread.php?t=2546483. It should give you the information you need
Click to expand...
Click to collapse
Got it working, thanks for the help!
kwerdenker said:
Checkout this thread: http://forum.xda-developers.com/showthread.php?t=2546483. It should give you the information you need
Click to expand...
Click to collapse
The images was changed automatically, and i also want to creat two buttons ( previous and next image) to change it manually, is it possible?
Oohhlala said:
The images was changed automatically, and i also want to creat two buttons ( previous and next image) to change it manually, is it possible?
Click to expand...
Click to collapse
Only with Zooper, no. You would need Tasker for this kind of setup.
kwerdenker said:
Only with Zooper, no. You would need Tasker for this kind of setup.
Click to expand...
Click to collapse
So could u tell me how to do this by using tasker ?

MODE_WORLD_READABLE in Android N

So it looks like support for MODE_WORLD_READABLE has completely ceased in Android N.
The app fails to open if you compile using SDK 24. I didn't realise that in time and now there's no going back (Play store doesn't allow to use an older SDK once you've published an apk compiled with 24)
I guess a lot of devs will continue to compile using SDK 23 or earlier as a workaround.
But any thoughts about other alternatives?
I know Xposed for N is far away. And I just have to use MODE_PRIVATE now that the app is constantly crashing. But I'm interested to know what other devs (and perhaps @rovo89) have in mind regarding this issue.
You could create your own helper method that would call getSharedPreferences and then set permissions using standard
File object functions.
Something like:
Code:
public static SharedPreferences getPreferencesAndKeepItReadable(Context ctx, String prefName) {
SharedPrefs prefs = ctx.getSharedPreferences(prefName, MODE_PRIVATE);
File prefsFile = new File(ctx.getFilesDir() + "/../shared_prefs/" + prefName + ".xml");
prefsFile.setReasable(true, false);
return prefs;
}
Might need a little tweaking but you get the idea.
This is just a guess. I am not sure whether prefs file permissions are changed only once while getSharedPreferences is called or every time
you update some preference and commit changes. Needs investigation.
C3C076 said:
You could create your own helper method that would call getSharedPreferences and then set permissions using standard
File object functions.
Something like:
Code:
public static SharedPreferences getPreferencesAndKeepItReadable(Context ctx, String prefName) {
SharedPrefs prefs = ctx.getSharedPreferences(prefName, MODE_PRIVATE);
File prefsFile = new File(ctx.getFilesDir() + "/../shared_prefs/" + prefName + ".xml");
prefsFile.setReasable(true, false);
return prefs;
}
Might need a little tweaking but you get the idea.
This is just a guess. I am not sure whether prefs file permissions are changed only once while getSharedPreferences is called or every time
you update some preference and commit changes. Needs investigation.
Click to expand...
Click to collapse
Thanks! This did cross my my mind as well. But I was wondering if this could conflict with Android N or future versions? Will test it and the file permissions (I can confirm that once the permission is set using getSharedPreferences, changing the mode parameter to something else later does not affect the permissions. But yea, now I need to test what happens when the permission is changed manually using File object functions).
I also found that XSharedPreferences accepts a File as a parameter. So I was thinking about using a separate world readable copy of the pref file instead of changing permissions directly (perhaps this is more future-proof?).
PunchUp said:
I also found that XSharedPreferences accepts a File as a parameter. So I was thinking about using a separate world readable copy of the pref file instead of changing permissions directly (perhaps this is more future-proof?).
Click to expand...
Click to collapse
This sounds to me like great idea, provided XSharedPreferences supports explicit files.
--
C3C076 said:
This sounds to me like great idea, provided XSharedPreferences supports explicit files.
Click to expand...
Click to collapse
I just tried this and can confirm that it works perfectly. I stored a copy of the pref file in /data/data/.../files/ with appropriate permissions and XSharedPreferences loads the file from there, no problem.
PunchUp said:
I just tried this and can confirm that it works perfectly. I stored a copy of the pref file in /data/data/.../files/ with appropriate permissions and XSharedPreferences loads the file from there, no problem.
Click to expand...
Click to collapse
Great. Thanks for taking an effort to test. At least, we are ready for a workaround when xposed framework for N comes out.
I use this code
Code:
@Override
public void onPause() {
super.onPause();
// Set preferences file permissions to be world readable
File prefsDir = new File(getActivity().getApplicationInfo().dataDir, "shared_prefs");
File prefsFile = new File(prefsDir, getPreferenceManager().getSharedPreferencesName() + ".xml");
if (prefsFile.exists()) {
prefsFile.setReadable(true, false);
}
}
and it works quite well as a workaround.
---------- Post added at 05:33 PM ---------- Previous post was at 05:32 PM ----------
And maybe the whole XSharedPrefences could be reworked in this style: https://github.com/hamsterksu/MultiprocessPreferences or new-ish https://github.com/vsmaks/multiprocess-preferences & https://github.com/grandcentrix/tray
C3C076 said:
You could create your own helper method that would call getSharedPreferences and then set permissions using standard
File object functions.
Something like:
Code:
public static SharedPreferences getPreferencesAndKeepItReadable(Context ctx, String prefName) {
SharedPrefs prefs = ctx.getSharedPreferences(prefName, MODE_PRIVATE);
File prefsFile = new File(ctx.getFilesDir() + "/../shared_prefs/" + prefName + ".xml");
prefsFile.setReasable(true, false);
return prefs;
}
Might need a little tweaking but you get the idea.
This is just a guess. I am not sure whether prefs file permissions are changed only once while getSharedPreferences is called or every time
you update some preference and commit changes. Needs investigation.
Click to expand...
Click to collapse
Code:
getPreferenceManager().setSharedPreferencesMode([COLOR=#9876aa][I]MODE_PRIVATE[/I][/COLOR])[COLOR=#cc7832];[/COLOR]
[COLOR=#cc7832][/COLOR]addPreferencesFromResource(R.xml.[COLOR=#9876aa][I]preferences[/I][/COLOR])[COLOR=#cc7832];
[/COLOR][COLOR=#cc7832][/COLOR][COLOR=#9876aa]context [/COLOR]= getActivity().getBaseContext()[COLOR=#cc7832];
[/COLOR][COLOR=#cc7832][/COLOR][COLOR=#808080]//pref = context.getSharedPreferences(PREF_FILE, MODE_PRIVATE); // 0 - for private mode[/COLOR]
[COLOR=#808080][/COLOR][COLOR=#9876aa]pref [/COLOR]= [I]getPreferencesAndKeepItReadable[/I]([COLOR=#9876aa]context[/COLOR][COLOR=#cc7832], [/COLOR][COLOR=#808080]PREF_FILE[/COLOR])[COLOR=#cc7832];
[/COLOR]
Doing this worked for me. Thank you for sharing your idea to help others.
Two typos in your example code : SharedPrefs and setReasable which was easy to understand and fix.
Thank you , it works.
Strange issue here.
It worked for me only once.
I have tried using setReadable but no luck.
Xposed preferences class has a method to make the file readable. I've been using just that in combination with the private mode in the user mode app and it's been working pretty good so far for me on Nougat.
Xspeed said:
Xposed preferences class has a method to make the file readable. I've been using just that in combination with the private mode in the user mode app and it's been working pretty good so far for me on Nougat.
Click to expand...
Click to collapse
I tried prefs.makeWorldReadable();
But it returns false, that means it didn't worked.
Any suggestions?
Sent from my OnePlus3 using XDA Labs
PunchUp said:
So it looks like support for MODE_WORLD_READABLE has completely ceased in Android N.
The app fails to open if you compile using SDK 24. I didn't realise that in time and now there's no going back (Play store doesn't allow to use an older SDK once you've published an apk compiled with 24)
I guess a lot of devs will continue to compile using SDK 23 or earlier as a workaround.
But any thoughts about other alternatives?
I know Xposed for N is far away. And I just have to use MODE_PRIVATE now that the app is constantly crashing. But I'm interested to know what other devs (and perhaps @rovo89) have in mind regarding this issue.
Click to expand...
Click to collapse
Is there any solution now?
This is for hide xposed for pass safetynet ?
koko115 said:
This is for hide xposed for pass safetynet ?
Click to expand...
Click to collapse
Obviously no
Sent from my Samsung Galaxy Trend Plus using XDA Labs

Microsoft edge

is there any wayto get inspect element and view source on edge..i got this while browsing the files...but when i opened about:flags i don't get the first optionIs there any way to get this option on my phone..
that'smee said:
is there any wayto get inspect element and view source on edge..i got this while browsing the files...but when i opened about:flags i don't get the first optionIs there any way to get this option on my phone..
Click to expand...
Click to collapse
What's the route of the first image??
xxJMarian said:
What's the route of the first image??
Click to expand...
Click to collapse
C:\Data\PROGRAMS\WINDOWSAPPS\Microsoft.MicrosoftEdge_40.15063.540.0_arm__8wekyb3d8bbwe\assets\flags.htm
that'smee said:
C:\Data\PROGRAMS\WINDOWSAPPS\Microsoft.MicrosoftEdge_40.15063.540.0_arm__8wekyb3d8bbwe\assets\flags.htm
Click to expand...
Click to collapse
Here you have the modified file, without the hideformobile flags. Make a backup of yours before replacing. Didn't have time for testing it.
Edit: Tested it. Shows the developer tools and can be activated from about:flags
xxJMarian said:
Here you have the modified file, without the hideformobile flags. Make a backup of yours before replacing. Didn't have time for testing it.
Edit: Tested it. Shows the developer tools and can be activated from about:flags
Click to expand...
Click to collapse
Didn't worked on my phone..but how did you do this??
that'smee said:
Didn't worked on my phone..but how did you do this??
Click to expand...
Click to collapse
Editing the flags.htm. Reading the file, the properties you want have a hideformobile propertie, delete it or set it to false.
Screenshot
I checked with my own flags file. You can switch "hideformobile" flags to true and the result is the same - aka it works.
rateiosu said:
I checked with my own flags file. You can switch "hideformobile" flags to true and the result is the same - aka it works.
Click to expand...
Click to collapse
The flags are by default TRUE, maybe you meant FALSE.
xxJMarian said:
Editing the flags.htm. Reading the file, the properties you want have a hideformobile propertie, delete it or set it to false.
Screenshot
Click to expand...
Click to collapse
Have you got inspect element in menu on your browser or will have to do more tweaks for getting this inspect element and view source menu..
that'smee said:
Have you got inspect element in menu on your browser or will have to do more tweaks for getting this inspect element and view source menu..
Click to expand...
Click to collapse
Right click doesn't exist in mobile nor does f12... so the answer is no. Maybe if you have a bluetooth keyboard... i don't know. The mobile context menu doesn't show developer tools but it is enabled indeed with this tweak. Desktop edge has a button for developer options in the [. . .] menu but mobile doesn't.
ah, my bad!
Yeah, the flag can be switched to FALSE in order to see it on the mobile.
Also, you can access the other options as well. So far, doing this did my 640XL working better with Edge.

Remove network indicator arrows

Hey,
since the Pie update i got these little network activity arrows. Unfortunately they grab alot of space in the status bar.
My question is, if someone knows how to remove them. Maybe trough build.prop editor or something?
Also i really would like to change that '4G' symbol to 'LTE' but i can't find a solution for that. If anyone can help me with i would appreciate!
PS: i know there are xposed modules that can change that, but don't want to use xposed because of performance and stability.
thanks and greetings from germany
I hope that they will remove it from the stable version bc there is not much space left from the notch already on the notification bar. And yeah there is no way to disable it on pie without root. If you have root access you can try substratum themes.
Yes i am rooted but substratum does also affect performance and stability. that's why i try to keep my phone free from substratum/xposed.
Im really hoping someone finds a build prop command or something cause i didnt find anything useful
Those arrows are the most infuriating thing from PIE. I can't understand why Xiaomi kept them, knowing that they (thankfully) removed them in Oreo making it different from AOSP.
Pls Xiaomi get rid of those arrows...
The changes made from Oreo to Pie are just.. weird!
********
If you guys think that it's taking up too much space in the status bar you can try putting display size to small ? it shrinks the icons among other things. I know this is not a hard fix but it's something at least.
Kenny1609 said:
If you guys think that it's taking up too much space in the status bar you can try putting display size to small ? it shrinks the icons among other things. I know this is not a hard fix but it's something at least.
Click to expand...
Click to collapse
I don't want the rest of the content to be that small! Plus, on restart, the dots appear again on status bar
Same problem here. I don't see except my battery percentage and the dot.
No wifi no network nothing at all.
merlin.berlin said:
Hey,
since the Pie update i got these little network activity arrows. Unfortunately they grab alot of space in the status bar.
My question is, if someone knows how to remove them. Maybe trough build.prop editor or something?
Also i really would like to change that '4G' symbol to 'LTE' but i can't find a solution for that. If anyone can help me with i would appreciate!
PS: i know there are xposed modules that can change that, but don't want to use xposed because of performance and stability.
thanks and greetings from germany
Click to expand...
Click to collapse
Look this post https://forum.xda-developers.com/showpost.php?p=78608669&postcount=11.
For me working.
********
r4nm4 said:
In my case doesn't work
Click to expand...
Click to collapse
Sorry, I wrote exactly what I did
********
r4nm4 said:
Np at all just saying Thanks for sharing
Just a doubt: in your post the name of the file is "com.keypressure.disable_network_activity_indicato r.apk"
with a space between indicato and r Is it correct? To be honest renamed my file without space.
So, rename the file, moved, changed permission, reboot.
Nope, doesn't work on my PIE
Let's wait other feedback
Thanks
Click to expand...
Click to collapse
The name and the method which you use is correct. I don't know why but i write the name correctly and in the post is wrong, it add the space.
Why for you no work , I don't know
********
liboriof said:
The name and the method which you use is correct. I don't know why but i write the name correctly and in the post is wrong, it add the space.
Why for you no work , I don't know
Click to expand...
Click to collapse
Try to write in the adb command window this "adb shell cmd overlay enable --user 0 com.keypressure.disable_network_activity_indicator".
Remember to activate the debug option.
********
r4nm4 said:
I just noticed that... after restart the phone, the apk file moved in system/app disappear.
Probably that's why doesn't work.
Maybe miss 1 step? Like write something in some setting?
Or some command by adb to enable the file?
Thanks
Click to expand...
Click to collapse
Try to read the previous post
********
r4nm4 said:
Yeah I did that... but still, doesn't work.
Apk file disappear after reboot.
Sounds weird to me that in your case it works without any problem,
also without that adb command, otherwise no mention it in your first guide post.
Nevermind, all good Let's wait other users and will see if doesn't work only to me.
Btw thanks again!
Click to expand...
Click to collapse
i got the same problem. apk always disappear after reboot.
only thing i found on google was to wipe cache with TWRP and then try again. but had no time to test this yet

Disable high volume warning

Hi, I want to disable the High volume warning, I already have a solution, right now I use terminal shortcut pro and have created a shortcut to run the command
Code:
settings put global audio_safe_volume_state 0
it work great but doesn't survive a reboot so I have to run the shortcut after every reboot. I found an old thread on reddit that say adding the line
Code:
audio.safemedia.bypass=true
to build.prop can also disable the high volume warning, but the thread was so old, they were talking android 6.0
I plan to try to add this prop on boot using the magisk module MagiskHide Props Config, I know it work great because I already added a prop to reduce the media volume steps to 15 instead of 30, but i dont know if the prop
Code:
audio.safemedia.bypass=true
is still working on android 10
Another solution would be to have an app that run the terminal command
Code:
settings put global audio_safe_volume_state 0
automatically after boot, but I would prefer to add the prop line if anyone can confirm it still work on android 10
Thank you all !
Nice to know.... what's also wondering from time to time how to overcome the warning. let me know if you get it to a working solution.
Just for the last part: tasker would be the way to go.
Gesendet von meinem HD1903 mit Tapatalk
xe0r said:
Nice to know.... what's also wondering from time to time how to overcome the warning. let me know if you get it to a working solution.
Just for the last part: tasker would be the way to go.
Gesendet von meinem HD1903 mit Tapatalk
Click to expand...
Click to collapse
After 24 hours testing the audio.safemedia.bypass=true with MagiskHide Props Config, I have not seen the warning yet, but I need to test it longer to be sure it work
Just a quick update for future search, the prop
Code:
audio.safemedia.bypass=true
seem to work, I have not seen the high volume warning for the whole week, so problem solved !
Hey one question, how were you able to edit the build.prop file? Whenever I try to do so with Root Explorer, it doesn't save my changes. OnePlus 8 Pro Android 10
memocatcher said:
Hey one question, how were you able to edit the build.prop file? Whenever I try to do so with Root Explorer, it doesn't save my changes. OnePlus 8 Pro Android 10
Click to expand...
Click to collapse
Only with Magisk module MagiskHide Props Config
jacobyo7 said:
Just a quick update for future search, the prop
Code:
audio.safemedia.bypass=true
seem to work, I have not seen the high volume warning for the whole week, so problem solved!
Click to expand...
Click to collapse
Hello and thank you for finding a workaround for this stupid issue! Do you know if this is still working on android 11? After installing the module, how can I correctly set it? Thank you so much for your help
I tried setting it with termux but it's not working
addsfsds said:
I tried setting it with termux but it's not working
Click to expand...
Click to collapse
I still use it with 11 on my OP7T but I am unsure if this prop remove the audio warning or if there is no warning at all on my device. Never tried 11 wihtout the prop so IDK.
Another way you can try is the system UI tuner app on the play store, there is a setting to disable the warning under the audio & sound category. Good luck !
jacobyo7 said:
I still use it with 11 on my OP7T but I am unsure if this prop remove the audio warning or if there is no warning at all on my device. Never tried 11 wihtout the prop so IDK.
Another way you can try is the system UI tuner app on the play store, there is a setting to disable the warning under the audio & sound category. Good luck !
Click to expand...
Click to collapse
Thank you for your reply! I kept trying to no avail. Can't make it work unfortunately. When you upgraded to android 11, did you make the procedure again from scratch? Can you please explain what you did on termux?
Is the system ui app an app that it's aways on background?
Thank you so much!
addsfsds said:
Thank you for your reply! I kept trying to no avail. Can't make it work unfortunately. When you upgraded to android 11, did you make the procedure again from scratch? Can you please explain what you did on termux?
Is the system ui app an app that it's aways on background?
Thank you so much!
Click to expand...
Click to collapse
No the system UI tuner app just change some hidden android settings, it do not run in the background. The description of the app even state you can delete the app once you changed the desired setting. Read the whole description to understand how it work. Try it, I think this might be the best solution.
SystemUI Tuner - Apps on Google Play
PLEASE READ ENTIRE DESCRIPTION BEFORE INSTALLING
play.google.com
jacobyo7 said:
No the system UI tuner app just change some hidden android settings, it do not run in the background. The description of the app even state you can delete the app once you changed the desired setting. Read the whole description to understand how it work. Try it, I think this might be the best solution.
SystemUI Tuner - Apps on Google Play
PLEASE READ ENTIRE DESCRIPTION BEFORE INSTALLING
play.google.com
Click to expand...
Click to collapse
Thank you for your kind suggestion. I tried and again it didn't work, really don't know why.
addsfsds said:
Code:
settings put global audio_safe_volume_state 0
Thank you for your kind suggestion. I tried and again it didn't work, really don't know why.
Click to expand...
Click to collapse
i can confirm that no app does change the setting of safe volume limit.
All tests on rooted device from LOS14-LOS19. Tried different apps like systemuituner, safevolumelimitdisabler, volumesteps+, jamesdsp etc.
Tried to patch the global variable "safe_media_volume" like described here on a rooted device but no luck.
Just ran
[adb shell] settings put global audio_safe_volume_state 0
via adb, when the message popped up, afterits i had to confirm the nag-screen, to raise the volume. it's so weird..

Categories

Resources