Attend XDA's Second Annual Developer Conference, XDA:DevCon 2014!
5,809,019 Members 51,487 Now Online
XDA Developers Android and Mobile Development Forum

[Q] Why am I receiving NoSuchMethod for adjustStreamVolume

Tip us?
 
bkertz
Old
#1  
bkertz's Avatar
Member - OP
Thanks Meter 8
Posts: 54
Join Date: Aug 2010
Location: St. Louis
Default [Q] Why am I receiving NoSuchMethod for adjustStreamVolume

I wrote a module for myself to get started with xposed development when my phone (LG G2) was on Jelly Bean. I upgraded my phone to Kit Kat and noticed my module was no longer working and was firing a NoSuchMethod exception:

Code:
java.lang.NoSuchMethodError: android.media.AudioService#adjustStreamVolume(int,int,int)#exact
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:179)
at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:129)
at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:136)
at com.bkdev.android.xposed.mods.ringtonesync.VolumeSync.handleLoadPackage(VolumeSync.java:21)
at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:20)
at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:34)
at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:70)
at de.robv.android.xposed.XposedBridge$2.beforeHookedMethod(XposedBridge.java:228)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:611)
at com.android.server.ServerThread.initAndLoop(Native Method)
at com.android.server.SystemServer.main(SystemServer.java:1478)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:631)
at com.android.server.SystemServer.main(Native Method)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)
I checked the API and it doesn't appear that adjustStreamVolume was deprecated or changed in any way, so I'm kind of confused as to why this would be happening. Maybe it's just my ignorance of xposed development so far, but here's my code with all of meat stripped out. From what I gather, the findAndHookMethod is the problem anyway. Any assistance as to why this is no longer working would be greatly appreciated. Let me know if more details are needed.


Code:
    
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
    	if (!lpparam.packageName.equals("android"))
            return;

//    	XposedBridge.log("In com.android.media");

    	findAndHookMethod("android.media.AudioService", lpparam.classLoader, "adjustStreamVolume", int.class, int.class, int.class, new XC_MethodHook() {
    		protected void afterHookedMethod(MethodHookParam param) throws Throwable {
    			XposedBridge.log("********Hooked 'adjustStreamVolume'********");
    			
    		}
    		
    	});
    	
    }
 
pyler
Old
#2  
Senior Member
Thanks Meter 441
Posts: 358
Join Date: Jan 2013
Try use InitZygote for "android".
 
GermainZ
Old
#3  
GermainZ's Avatar
Forum Moderator / Recognized Developer
Thanks Meter 6,396
Posts: 5,476
Join Date: Aug 2012
Checking the source:
Code:
Select Code
    /** @see AudioManager#adjustStreamVolume(int, int, int) */
    public void adjustStreamVolume(int streamType, int direction, int flags,
            String callingPackage) {
         …
    }
The Following User Says Thank You to GermainZ For This Useful Post: [ Click to Expand ]
 
bkertz
Old
#4  
bkertz's Avatar
Member - OP
Thanks Meter 8
Posts: 54
Join Date: Aug 2010
Location: St. Louis
@GermainZ

When I look at the developer reference for adjustStreamVolume in the AudioManager class, I don't see the extra parameter (String callingPackage) that you reference. Am I looking in the wrong place for the method I want to hook?

http://developer.android.com/referen...reamVolume(int, int, int)

Sent from my LG-LS980 using Tapatalk
 
GermainZ
Old
#5  
GermainZ's Avatar
Forum Moderator / Recognized Developer
Thanks Meter 6,396
Posts: 5,476
Join Date: Aug 2012
Quote:
Originally Posted by bkertz View Post
@GermainZ

When I look at the developer reference for adjustStreamVolume in the AudioManager class, I don't see the extra parameter (String callingPackage) that you reference. Am I looking in the wrong place for the method I want to hook?

http://developer.android.com/referen...reamVolume(int, int, int)

Sent from my LG-LS980 using Tapatalk
You're hooking AudioService, the page you're linking is the documentation for AudioManager.
The Following User Says Thank You to GermainZ For This Useful Post: [ Click to Expand ]
 
bkertz
Old
#6  
bkertz's Avatar
Member - OP
Thanks Meter 8
Posts: 54
Join Date: Aug 2010
Location: St. Louis
Quote:
Originally Posted by GermainZ View Post
You're hooking AudioService, the page you're linking is the documentation for AudioManager.
Well I really feel dumb now. It helps to look in the right place. Strange that this worked before for me. Do you have any recommendations between using AudioManager vs. AudioService? It appears AudioService is not on the developer pages.

Sent from my LG-LS980 using Tapatalk
 
GermainZ
Old
#7  
GermainZ's Avatar
Forum Moderator / Recognized Developer
Thanks Meter 6,396
Posts: 5,476
Join Date: Aug 2012
Quote:
Originally Posted by bkertz View Post
Well I really feel dumb now. It helps to look in the right place. Strange that this worked before for me. Do you have any recommendations between using AudioManager vs. AudioService? It appears AudioService is not on the developer pages.

Sent from my LG-LS980 using Tapatalk
Hook methods that are available in the SDK when you can. Hooking internal methods may stop working on newer versions since they can change at any time (they're internal methods after all).
The Following User Says Thank You to GermainZ For This Useful Post: [ Click to Expand ]
 
bkertz
Old
#8  
bkertz's Avatar
Member - OP
Thanks Meter 8
Posts: 54
Join Date: Aug 2010
Location: St. Louis
Thanks.

Sent from my LG-LS980 using Tapatalk

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes