java - Android设备管理AndroidManifest.xml,为什么接收者名称中有问号?

标签 java android device-admin

在读Android documentation on Device Administration ,它说设置如下:

<activity android:name=".app.DeviceAdminSample" ... ></activity>

<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" ... ></receiver>

public class DeviceAdminSample extends DeviceAdminReceiver { ... }

在我的应用程序上设置接收器名称时,Studio 在 ...$DeviceAdminSampleReceiver" 上给出了“无法解析符号”错误。部分,所以我将接收器名称和类名称设置为“MyDeviceAdminReceiver”

示例中的接收器名称与设备管理接收器类名称不匹配。美元符号有什么意义?为什么该示例对接收器和接收器类有不同的名称?

最佳答案

“$”语法表示 DeviceAdminSampleReceiverDeviceAdminSample 的内部类。这是 Java 表示法。

您发布的文档链接引用了随 Android SDK 分发的示例:

SDK_ROOT/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java

在这个示例中,您可以看到上面的类关系是这样的:

public class DeviceAdminSample extends PreferenceActivity {
   ...
   public static class DeviceAdminSampleReceiver extends DeviceAdminReceiver {
   ...
   }
}

因此,如果您想遵循与示例相同的模式,那么您必须具有相同的内部类关系。尽管 Android 中没有任何内容要求您这样做。您只需确保 list 中的 receiver 元素指向现有类(无论是否是内部类)。

关于java - Android设备管理AndroidManifest.xml,为什么接收者名称中有问号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996674/

相关文章:

android - setKeyguardDisabledFeatures(componentName, DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE);无法在 android-q/Android 10 中运行

android - 以编程方式锁定 Android 设备

java - 运行已编译的 Java 类

java - 如何在 Swing 中将一个窗口停靠到另一个窗口?

android将应用程序设置为仅纵向,键盘拔出时除外

android - ion-item 中的 ionic href 在 android 真实设备中不起作用

java - 在 webview Activity 上打开 Json url

java - java中的kadane算法

java - 如何在阶乘中使用递归?我的编码没有阶乘

Android - 密码保护设备管理员禁用