2017-08-31 74 views
0

那么,更大的问题是如何使公共类{AccountManagerService}无法访问?AccountManagerService:如何访问其私有方法

[编辑]

如果我开发一个Android应用程序,我只能访问的AccountManager但不AccountManagerService正在由的AccountManager内部使用。如果我查看它,我可以找到com.android.server.accounts。 AccountManagerService类并声明为public。但是,我仍然无法导入它,也没有创建它的参考。

+0

无法访问什么? –

+0

如果我正在开发一个android应用程序,我只能访问AccountManager,但不能访问AccountManager内部使用的AccountManagerService。如果我查找它,我可以找到'com.android.server.accounts。 AccountManagerService'类并声明为public。但是,我仍然无法导入它,也没有创建它的参考。 –

+0

您可能无法访问此对象。即使你这样做,请记住它的API和实现可能因Android版本和设备制造商而异。 – CommonsWare

回答

0

访问另一个类的私有方法只能通过使用反射像这样来实现:

Method m = SomeClass.class.getDeclaredMethod("methodName", paramClasses); 
m.setAccessible(true); 
m.invoke(params); 

这可以通过这样的类的创建者可以防止和我期望这是具有内部的Android类的情况。

通过设置您自己的SecurityManager并拒绝访问此类,可以完成公共类无法访问。我不会详细讨论这个问题,因为在Android上运行时,你不太可能设置自己的SecurityManager。