2011-08-10 5 views
3

BlackBerryデバイスに登録されている電子メールアドレスを検索するBlackBerryアプリケーションで作業しています。私は達成するためにこのコードを使用しています:BlackBerry Lookupメールアドレス

  Session session = Session.getDefaultInstance(); 
     System.out.println("############### got session ################"); 
     if (session != null) { 
      Store store = session.getStore(); 
      System.out.println("################ got store ######################"); 
      ServiceConfiguration serviceConfig = store.getServiceConfiguration(); 
      System.out.println("################ got config #####################"); 
      email = serviceConfig.getEmailAddress(); 
     } 

これは、すでに電子メールアドレスを登録しているデバイスではうまくいきます。しかし、デバイスにアドレスが登録されていない場合は、次の行が表示されます。

email = serviceConfig.getEmailAddress(); 

決して返されません。したがって、私のアプリケーション全体が無期限に停止します。これを解決する最良の方法は何ですか?私の最初のアイデアは、電子メール文字列を1〜2秒後に "No Address Registered"のようなデフォルト値に設定するタイマータスクを設定することです。アプリが停止して何もしない以外の電子メールは存在しないという通知を受けるより良い方法はありますか?

答えて

4

メールが登録されていないとserviceConfig.getEmailAddress();が例外をスローすることが判明しました。これについては、BlackBerryのドキュメントには記載されていません。その例外をキャッチしないとメソッドが返ってこないので、アプリケーションが無期限に停止するので、奇妙です。しかし、問題を解決するには、その呼び出しをtry/catchで囲み、電子メールをcatchブロックでデフォルトに設定することができます。

実際に正しく文書化されていれば、時間が大幅に節約できました。私はうまくいけば、ここに答えを掲示することは誰かが文書化されていないものを追いかけるのを防ぐでしょう。