Android 设备管理 AndroidManifest.xml,为什么接收方名称中的问号



在阅读有关设备管理的Android文档时,它说要按如下方式进行设置:

<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中没有任何内容要求您这样做。 您只需要确保清单中的 receiver 元素指向现有类(无论是内部类还是非内部类)。

相关内容

  • 没有找到相关文章

最新更新