什么是@hide在Android源$ C ​​$ C是什么意思? [英] What does @hide mean in the Android source code?

查看:330
本文介绍了什么是@hide在Android源$ C ​​$ C是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于<一href="https://android.googlesource.com/platform/frameworks/base/+/android-2.3.5_r1/core/java/android/app/Activity.java"><$c$c>Activity来源$ C ​​$ C ,线3898(几乎底部):

For the Activity source code, line 3898 (almost bottom):

/**
 * @hide
 */
public final boolean isResumed() {
    return mResumed;
}

这是什么 @hide 是什么意思?

我发现我的公共类ChildActivity延伸活动{...} 无法使用/看 Activity.isResumed()。这正常吗?我怎样才能访问它?

I found my public class ChildActivity extends Activity { ... } cannot use/see Activity.isResumed(). Is this normal? How can i access it?

请回答所有的三个问题。非常感谢!

Please answer all the three questions. Thanks a lot!

推荐答案

Android有两种类型的API无法通过SDK访问的。

Android has two types of APIs that are not accessible via SDK.

第一个是位于包com.android.internal。第二个API类型是集合类和方法标有 @hide的javadoc属性

The first one is located in package com.android.internal. The second API type is collection of classes and methods that are marked with @hide javadoc attribute.

隐藏的方法仍然可以通过Java反射来访问。该@hide属性的javadoc的只是其中的一部分(droiddoc也),所以@hide仅仅只是意味着该方法/类/场被排除在API文档。

The hidden methods can still be accessed via java reflection. The @hide attribute is just part of javadoc(droiddoc also), so the @hide just simply mean the method/class/field is excluded from the API docs.

例如,在ActivityManager.java的checkUidPermission方法是@hide。

For example, the checkUidPermission method in ActivityManager.java is @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;
}

不过,我们可以通过反射调用它。

However, we can call it by reflection.

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});

这篇关于什么是@hide在Android源$ C ​​$ C是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆