Sms J2ME手机对不兼容的软件包有自动禁用功能吗?

Sms J2ME手机对不兼容的软件包有自动禁用功能吗?,sms,java-me,wma,Sms,Java Me,Wma,我想知道,例如,如果我开发了一个同时包含WMA软件包(1.1和2.0)的应用程序,然后将其部署到只支持WMA 1.1的旧款手机上,手机会禁用2.0软件包吗 代码在不同软件包之间的设置没有差异,但2.0软件包为代码提供了额外的功能,这对于较新的手机来说是最佳选择。对于不支持新功能的旧款手机,这将是一个错误 用于从一个源代码包为新旧手机编译不同版本。如果大小不是问题,则不必使用预处理。如果您不使用仅在WMA2.0中存在的类,那么您只会被NoSuchMethodErrors绊倒。考虑这样做。 publ

我想知道,例如,如果我开发了一个同时包含WMA软件包(1.1和2.0)的应用程序,然后将其部署到只支持WMA 1.1的旧款手机上,手机会禁用2.0软件包吗


代码在不同软件包之间的设置没有差异,但2.0软件包为代码提供了额外的功能,这对于较新的手机来说是最佳选择。

对于不支持新功能的旧款手机,这将是一个错误


用于从一个源代码包为新旧手机编译不同版本。

如果大小不是问题,则不必使用预处理。如果您不使用仅在WMA2.0中存在的类,那么您只会被NoSuchMethodErrors绊倒。考虑这样做。

public void doSomeThing()
{
  try{
    callWMA2_0Method();
  }
  catch( NoSuchMethodError e )
  {
    // We're WMA 1.1 then 
    callWMA1_1Method();
  }
} 

当然,您只能针对WMA2.0进行编译。但这不应该是一个问题:

< P>我会考虑使用<代码>类.FordNe/COD>根据设备是否支持WMA 2或< P>加载适当的代码。
class SpecificFeatureFactory {
    SpecificFeature get(boolean isWma2) {
        return (SpecificFeature)Class.forName(isWma2 ? "Rich" : "Poor");
    }
}

class Rich implements SpecificFeature {
    @Override
    long doSomething(String className, Date dateAlarm) throws Exception {
        return PushRegistry.registerAlarm(className, dateAlarm);
    }
}

class Poor implements SpecificFeature {
    @Override
    long doSomething(String className, Date dateAlarm) throws Exception {
        return -1;
    }
}

interface SpecificFeature {
    long doSomething(String className, Date dateAlarm) throws Exception;
}
据我回忆,WMA规范描述了应用程序如何确定它是
1.1
还是
2.0