0

我在市场上有一个应用程序(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,它可以在上面运行。

4

1 回答 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 回答