एंड्रॉइड में दो प्रकार के एपीआई हैं जो एसडीके के माध्यम से सुलभ नहीं हैं।
पहला पैकेज में स्थित है com.android.internal
। दूसरा एपीआई प्रकार वर्गों और विधियों का एक संग्रह है जो @hide Javadoc विशेषता के साथ चिह्नित हैं ।
एंड्रॉइड 9 (एपीआई स्तर 28) से शुरू होकर, Google गैर-एसडीके इंटरफेस के उपयोग पर नए प्रतिबंधों का परिचय देता है , चाहे सीधे प्रतिबिंब के माध्यम से, या जेएनआई के माध्यम से। जब भी कोई एप्लिकेशन गैर-एसडीके इंटरफेस का संदर्भ देता है या प्रतिबिंब या जेएनआई का उपयोग करके अपने हैंडल को प्राप्त करने का प्रयास करता है तो ये प्रतिबंध लागू होते हैं।
लेकिन एपीआई स्तर 28 से पहले, छिपे हुए तरीकों को अभी भी जावा प्रतिबिंब के माध्यम से एक्सेस किया जा सकता है। @hide
इसलिए विशेषता, जावाडोक (droiddoc भी) का सिर्फ एक हिस्सा है @hide
सिर्फ सीधा सा अर्थ विधि / कक्षा / क्षेत्र एपीआई डॉक्स से बाहर रखा गया है।
उदाहरण के लिए, उपयोग checkUidPermission()
में विधि :ActivityManager.java
@hide
/** @hide */
public static int checkUidPermission(String permission, int uid) {
try {
return AppGlobals.getPackageManager()
.checkUidPermission(permission, uid);
} catch (RemoteException e) {
// Should never happen, but if it does... deny!
Slog.e(TAG, "PackageManager is dead?!?", e);
}
return PackageManager.PERMISSION_DENIED;
}
हालाँकि, हम इसे प्रतिबिंब द्वारा कह सकते हैं:
Class c;
c = Class.forName("android.app.ActivityManager");
Method m = c.getMethod("checkUidPermission", new Class[] {String.class, int.class});
Object o = m.invoke(null, new Object[]{"android.permission.READ_CONTACTS", 10010});