在进行Android项目开发过程中,有很多公开的api方法可以直接调用,但是还有一部分api方法是hide的,如下所示:
android/app/PendingIntent.java:
/**
* @hide
* Return the Intent of this PendingIntent.
*/
public Intent getIntent() {
try {
return ActivityManager.getService()
.getIntentForIntentSender(mTarget);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
我们是无法通过PendingIntent的实例来get这个方法的,这个时候就需要用到反射,直接上我的代码如下:
PendingIntent mPendingIntent = entry.contentIntent;
try {
Classcls = PendingIntent.class;//首先还是必须得到这个对象的Class。
Method mGetIntent = cls.getDeclaredMethod("getIntent");//得到执行的method
mGetIntent.setAccessible(true);//设置访问权限
//执行该Method.invoke方法的参数是执行这个方法的对象owner,和参数数组args,可以这么理解:o