2013-02-19 51 views
1

下面的代碼工作:J2ME手機短信發送權限N85壓制安全警告

import javax.microedition.io.*; 
import javax.microedition.lcdui.*; 
import javax.microedition.midlet.MIDlet; 
import javax.wireless.messaging.*; 
/** 
* @author Panda 
*/ 
public class Midlet extends MIDlet implements CommandListener { 
     Display display; 
     private TextField toWhom; 
     private TextField message; 
     private Alert alert; 
     private Command send,exit; 
     MessageConnection clientConn; 
     private Form compose; 
     TextMessage textmessage; 

     public void startApp() { 
      display=Display.getDisplay(this); 
      compose=new Form("Compose Message"); 
      toWhom=new TextField("To","",10,TextField.PHONENUMBER); 
      message=new TextField("Message","",600,TextField.ANY); 
      send=new Command("Send",Command.BACK,0); 
      exit=new Command("Exit",Command.SCREEN,5); 
      compose.append(toWhom); 
      compose.append(message); 
      compose.addCommand(send); 
      compose.addCommand(exit); 
      compose.setCommandListener(this); 
      display.setCurrent(compose); 
     } 
     public void pauseApp() { 
     } 
     public void destroyApp(boolean unconditional) { 
      notifyDestroyed(); 
     } 
     public void commandAction(Command cmd,Displayable disp) { 
      if(cmd==exit) { 
        destroyApp(false); 
      } 
      if(cmd==send) { 
        String mno=toWhom.getString(); 
        String msg=message.getString(); 
        if(mno.equals("")) { 
         alert = new Alert("Alert"); 
         alert.setString("Enter Mobile Number!!!"); 
         alert.setTimeout(2000); 
         display.setCurrent(alert); 
        } 
        else { 
         try { 
           clientConn=(MessageConnection)Connector.open("sms://"+mno); 
         } 
         catch(Exception e) { 
           alert = new Alert("Alert"); 
           alert.setString("Unable to connect to Station because of network problem"); 
           alert.setTimeout(2000); 
           display.setCurrent(alert); 
         } 
         try { 
           textmessage = (TextMessage) clientConn.newMessage(MessageConnection.TEXT_MESSAGE); 
           textmessage.setAddress("sms://"+mno); 
           textmessage.setPayloadText(msg); 
           clientConn.send(textmessage);        
         } 
         catch(Exception e) 
         { 
           alert=new Alert("Alert","",null,AlertType.INFO); 
           alert.setTimeout(Alert.FOREVER); 
           alert.setString(e.getMessage()); 
           display.setCurrent(alert); 
         } 
        } 
      } 
     } 
} 

我可以用這個MIDlet,但唯一的問題是,我的手機諾基亞N85不會讓我發發短信沒有我按短信確認短信發送安全警告。我想實現的目的是能夠通過給予應用更高的權限來編程式地繞過這種安全措施?我怎麼做? 我只是不希望下次按下發送按鈕時彈出此安全通知。 我試圖設置API權限的NetBeans JAD和補充這些:

javax.microedition.io.Connector.sms 
javax.wireless.messaging.sms.send 

但是,這是不夠的,繞過它。任何想法的人? 而我不想使用QT,所以請不要在此建議!

回答

0

擺脫安全彈出窗口的唯一正式方法是使用Thawte或Verisign的證書籤署您的midlet。這樣的證書每年將花費你299美元。 當然,沒有獨立開發者能夠支付這筆費用,特別是如果他的應用程序主要是爲了他自己的話。

因此,人們發明了非正式的方法來擺脫它們。

對於索尼愛立信的功能手機,您可以在個別手機上應用修補程序以刪除所有安全彈出窗口。我已經做了幾次,這真棒!最後,我可以創建有用的應用程序,因爲沒有阻止它們運行

缺點是,它顯然不會幫助所有的客戶。如果你有一羣客戶,你不能逃避簽名部分。

但是,如果你主要爲自己編寫小型應用程序,那麼修補可以非常緩解壓力。 :-)

我不知道如何修補其他品牌的手機。因此,我最近在stackoverflow.com上提出這個問題。但我的問題已經結束。顯然管理員不認爲這是相關的。我試圖解釋爲什麼我認爲它與「開發人員使用的工具」有關,但是隨後他們刪除了該帖子。

+0

感謝您的回覆mr_lou,這非常有幫助! – KopetePanda 2013-02-20 06:36:04

+0

畢竟我不得不使用QT .. Java有太多限制! – KopetePanda 2013-02-21 07:00:26

+0

非常真實。這絕對是開發人員快速接受Android並離開JavaME的原因之一。 – 2013-02-21 12:00:58