J2ME手机短信发送权限N85压制安全警告

问题描述:

下面的代码工作: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,所以请不要在此建议!

摆脱安全弹出窗口的唯一正式方法是使用Thawte或Verisign的证书签署您的midlet。这样的证书每年将花费你299美元。 当然,没有独立开发者能够支付这笔费用,特别是如果他的应用程序主要是为了他自己的话。

因此,人们发明了非正式的方法来摆脱它们。

对于索尼爱立信的功能手机,您可以在个别手机上应用修补程序以删除所有安全弹出窗口。我已经做了几次,这真棒!最后,我可以创建有用的应用程序,因为没有阻止它们运行

缺点是,它显然不会帮助所有的客户。如果你有一群客户,你不能逃避签名部分。

但是,如果你主要为自己编写小型应用程序,那么修补可以非常缓解压力。 :-)

我不知道如何修补其他品牌的手机。因此,我最近在*.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