Sms J2ME手机对不兼容的软件包有自动禁用功能吗?
我想知道,例如,如果我开发了一个同时包含WMA软件包(1.1和2.0)的应用程序,然后将其部署到只支持WMA 1.1的旧款手机上,手机会禁用2.0软件包吗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
代码在不同软件包之间的设置没有差异,但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