Android 设备管理AndroidManifest.xml,为什么接收器名称中有问号?
Android Device Administration AndroidManifest.xml, why the question mark in the receiver name?
看Androiddocumentation on Device Administration里面说要这样设置:
<activity android:name=".app.DeviceAdminSample" ... ></activity>
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" ... ></receiver>
public class DeviceAdminSample extends DeviceAdminReceiver { ... }
在我的应用程序上设置接收者名称时,Studio 在 ...$DeviceAdminSampleReceiver"
部分给出了 "Cannot resolve symbol" 错误,因此我将接收者名称和 class 名称设置为"MyDeviceAdminReceiver"
示例中的接收器名称与设备管理接收器 class 名称不匹配。美元符号的意义是什么?为什么示例中receiver和receiver的名字不同class?
“$”语法表示 DeviceAdminSampleReceiver
是 DeviceAdminSample
的内部 class。这是 Java 表示法。
您发布的文档 link 引用了与 Android SDK 一起分发的示例:
SDK_ROOT/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java
在此示例中,您可以看到上述 class 关系是这样的:
public class DeviceAdminSample extends PreferenceActivity {
...
public static class DeviceAdminSampleReceiver extends DeviceAdminReceiver {
...
}
}
因此,如果您想遵循与示例相同的模式,那么您必须具有相同的 inner-class 关系。尽管 Android 中没有任何内容要求您这样做。您只需要确保清单中的 receiver
元素指向现有的 class(无论是否在内部)。
看Androiddocumentation on Device Administration里面说要这样设置:
<activity android:name=".app.DeviceAdminSample" ... ></activity>
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" ... ></receiver>
public class DeviceAdminSample extends DeviceAdminReceiver { ... }
在我的应用程序上设置接收者名称时,Studio 在 ...$DeviceAdminSampleReceiver"
部分给出了 "Cannot resolve symbol" 错误,因此我将接收者名称和 class 名称设置为"MyDeviceAdminReceiver"
示例中的接收器名称与设备管理接收器 class 名称不匹配。美元符号的意义是什么?为什么示例中receiver和receiver的名字不同class?
“$”语法表示 DeviceAdminSampleReceiver
是 DeviceAdminSample
的内部 class。这是 Java 表示法。
您发布的文档 link 引用了与 Android SDK 一起分发的示例:
SDK_ROOT/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java
在此示例中,您可以看到上述 class 关系是这样的:
public class DeviceAdminSample extends PreferenceActivity {
...
public static class DeviceAdminSampleReceiver extends DeviceAdminReceiver {
...
}
}
因此,如果您想遵循与示例相同的模式,那么您必须具有相同的 inner-class 关系。尽管 Android 中没有任何内容要求您这样做。您只需要确保清单中的 receiver
元素指向现有的 class(无论是否在内部)。