我在市场上有一个应用程序(SIM Locked Notifier),它依赖于广播接收器,它在接收到 *android.intent.action.SIM_STATE_CHANGED* 的广播意图时做出反应。我为最新版本 4.0.3 开发了应用程序(即 SDK 级别 15),现在我想将其兼容性扩展到较低级别(为不可用的东西提供运行时检查,如操作栏或首选项片段)......问题是我想了解 *SIM_STATE_CHANGED * 事件也在较旧的平台上生成。此意图未记录在案,甚至在 SDK 中的 *platforms/android-15/data/broadcast_actions.txt* 中都找不到。我是否应该深入研究来源以了解它的位置已实施并下降到哪个 SDK 级别?这是特定于供应商的事件吗?我有一台 HTC One X,它可以在上面运行。
问问题
2120 次
1 回答
0
我不确定您的第一个问题。但我可以帮助您回答第二个问题。
现在我想将它的兼容性扩展到较低的级别(为不可用的东西提供运行时检查,如操作栏或首选项片段)
在这种情况下,反射会帮助你。使用反射,您可以查询类以获取可用的方法、构造函数等。
假设您想在应用程序中使用 PopupMenu。可能您的应用程序仍希望在 4.0 之前的设备上运行。所以使用反射
下面的代码片段和一些谷歌搜索将帮助你。
String sClassName = "android.widget.PopupMenu";
try {
Class classToInvestigate = Class.forName(sClassName);
Yes!!! Class is aviliable now do whatever you want to do with PopupMenu.
// Dynamically do stuff with this class
// List constructors, fields, methods, etc.
} catch (ClassNotFoundException e) {
// Class not found!
it means application is running on pre 4.0 version device.
} catch (Exception e) {
// Unknown exception
}
于 2012-06-02T10:30:56.420 回答