我的 J2me 应用程序遇到问题。
“允许应用程序使用网络发送或接收数据?”......用按钮选择“是”或“否”。
如果我选择“否”,那么什么也不会发生。(我的应用程序在步行中,在这种情况下没有网络连接我想关闭不在步行中的应用程序)
如果我选择“是”,则会出现一个新屏幕,(应用程序工作正常)
我的 J2me 应用程序遇到问题。
“允许应用程序使用网络发送或接收数据?”......用按钮选择“是”或“否”。
如果我选择“否”,那么什么也不会发生。(我的应用程序在步行中,在这种情况下没有网络连接我想关闭不在步行中的应用程序)
如果我选择“是”,则会出现一个新屏幕,(应用程序工作正常)
MIDP 规范附录中涵盖了您所询问的内容:适用于 GSM/UMTS 兼容设备的推荐安全策略。
上述文件相当冗长和复杂。为了更容易理解(虽然不太精确)的解释,请查看这篇文章:了解 MIDP 2.0 的安全架构:
... 本文介绍了保护用户及其设备免受恶意软件侵害的其他 MIDP 2.0 功能。您将使用 J2ME Wireless Toolkit 2.0... 来了解如何使用 MIDP 2.0 的安全架构。
什么是敏感操作?
MIDP 2.0 规范定义了一个开放式的权限系统。要进行任何类型的网络连接,MIDlet 必须具有适当的权限...
如果在“允许应用程序使用网络发送或接收数据?”中单击“否” alert ,它会在尝试打开连接时抛出 SecurityException 。只需捕获SecurityException。在 catch 块中,调用notifyDestroyed()以关闭应用程序。
StreamConnection s = null;
try {
s = (StreamConnection) Connector.open(searchContactUrl);
//your code
} catch (SecurityException se) {
this.notifyDestroyed();
}
您正在访问应用程序中的受限 API。要使用此应用程序,您的应用程序必须使用VesiSign或Thawte等签名证书进行签名。现在你的问题是
当你按no时:
因此,当您按“否”时,它会自动假定您的选择也将是“否”,因此下次不会询问。当您下一次在单次运行中访问相同的 api 时,您的应用程序将无法在下次出现时访问此类 api。
当你按下是
因此,当您按下是时,您的申请会继续进行。但是当您再次访问受限 api 时,它会再次警告您是否可以访问它。有些 api 需要一次用户输入(是),而有些则需要每次访问它们。
因此,要避免此消息,唯一的方法是签署您的应用程序。
在 Java ME 应用程序中,访问网络数据的安全消息将显示给用户。要删除此消息,应从制造商处签署/证明申请
现在选项是 YES 和 NO 是由你放置的,选项不关闭只使用代码:
// Arrange for the MIDlet to be destroyed
this.notifyDestroyed(); // where this is an instance of the MIDlet
有关申请认证的更多信息:
http://www.developer.nokia.com/Distribute/Packaging_and_signing.xhtml(诺基亚)