在读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”
示例中的接收器名称与设备管理接收器类名称不匹配。美元符号有什么意义?为什么该示例对接收器和接收器类有不同的名称?
最佳答案
“$”语法表示 DeviceAdminSampleReceiver
是 DeviceAdminSample
的内部类。这是 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/