Android反射:在运行时拦截TelephonyManager.getDeviceId函数
我购买的库中的一些函数调用Android反射:在运行时拦截TelephonyManager.getDeviceId函数,android,reflection,Android,Reflection,我购买的库中的一些函数调用getDeviceId(),这需要READ\u PHONE\u STATE权限。大多数用户不希望他们的电话号码被读取,所以我不想请求此权限 因此,我需要在运行时使用自己的函数截取android.telephony.TelephonyManager.getDeviceId()。我想它可能使用反射,但我找不到任何优雅的解决方案。有什么建议吗?我完全不清楚你想归档什么。您是否有一个lib,从那里调用一些函数,这些函数就地调用TelephonyManager.getDevice
getDeviceId()
,这需要READ\u PHONE\u STATE
权限。大多数用户不希望他们的电话号码被读取,所以我不想请求此权限
因此,我需要在运行时使用自己的函数截取android.telephony.TelephonyManager.getDeviceId()。我想它可能使用反射,但我找不到任何优雅的解决方案。有什么建议吗?我完全不清楚你想归档什么。您是否有一个lib,从那里调用一些函数,这些函数就地调用
TelephonyManager.getDeviceId()
?是的,但是getDeviceId()需要权限。所以我想在运行时用另一个函数截取getDeviceId()函数。我不认为您可以截取来自您无权访问的库的调用。我建议在你的清单中省略这个权限,并用一个try-catch来包围代码,在这里你什么都不做我知道我不能截取实际的代码。但我认为可以使用反射截取某个函数。据我所知:不,你不能用反射截取或覆盖某个方法。我没有访问lib的权限。每个应用程序都可以访问此功能。请使用此代码检查创建示例应用程序。
String deviceId = Secure.getString(this.getContentResolver(),Secure.ANDROID_ID);