2011-08-11 3 views
2

たとえば、WMAパッケージ(1.1と2.0)の両方でAppを開発し、それをWMA 1.1のみでサポートされている古い携帯電話モデルにデプロイする場合、電話で2.0パッケージを無効にするかどうかを知りたいですか?J2ME do携帯電話は互換性のないパッケージに対して自動無効化機能を備えていますか?

パッケージ間で設定されているコードの違いはありませんが、2.0パッケージでは、そのコードに追加の機能が追加され、最近の携帯電話に最適です。

答えて

2

すべきではないアプリケーションが、それはだかどうかを確認する方法について説明します1.1または2.0です。

1

新しい機能をサポートしていない古い電話機ではエラーになります。

Preprocessorを使用すると、ソースコードの1つのパッケージから古い電話と新しい電話のさまざまなバージョンをコンパイルできます。

1

サイズが問題でない場合は、必ずしも前処理を使用する必要はありません。 WMA 2.0にのみ存在するクラスを使用しない場合は、NoSuchMethodErrorsをトリップするだけです。これを検討してください。

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

もちろん、もちろんWMA 2.0に対してのみコンパイルできます。しかし、それは、私は、デバイスは、私の記憶のWMA仕様パーWMA 2か

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; 
} 

をサポートしているかどうかに応じて適切なコードをロードするためにClass.forNameを使用して検討したい問題

関連する問題