我正在编写一个将用户数据存储到文件中的应用程序。但是,当我尝试打开手机内存时,我的应用程序会引发安全异常,并且不允许我写入或读取数据 这是我的代码。
try
{
FileConnection fc = (FileConnection)Connector.open("file:///C:/myfile.dat",Connector.READ_WRITE);
// If no exception is thrown, the URI is valid but the folder may not exist.
if (!fc.exists())
{
fc.create(); // create the folder if it doesn't exist
}
OutputStream os=fc.openOutputStream();
String s="hello how r u..";
byte[] b=s.getBytes();
os.write(b);
os.flush();
fc.close();
}
catch(Exception error )
{
Alert alert = new Alert(error.getMessage(), error.toString(), null, null);
alert.setTimeout(Alert.FOREVER);
alert.setType(AlertType.ERROR);
display.setCurrent(alert);
}
但是我使用SDycard来保存数据并且工作正常。但是当我尝试访问手机内存时,是否有任何解决方案可以逃避SecurityException?每当一条消息提示要求用户允许应用程序读取或写入数据时,我将数据存储在SDCARD中。我也不想要这个提示信息 如何逃避这种情况?
答案 0 :(得分:1)
您必须签署并验证您的J2ME应用程序。这将涉及购买证书。我没有这样做,所以你必须确认这一点或等待另一个答案。但我很确定,除非你签署你的midlet,否则手机的安全政策将阻止这一点。
关于如何签署您的midlet的一个网址:
答案 1 :(得分:0)
同意@Sethu OP是由于midlet签名。
OP分为逻辑阶段以解决问题:
<强>问题/原因:强> 每当midlet访问受限制的API(在本例中为JSR 75 api)时,它都需要获得验证其真实性的权限,这有助于防止恶意代码。在您的情况下,midlet未签名(在#2中如何签名),因此它没有必要的权限,因此应用程序管理系统提示用户同意您的midlet进行的每个此类敏感操作。请阅读this link了解详情。
解决强>
它是一个多步骤的过程,(a)获取证书,参考this link,(b)在{{1}下添加必要的权限(读取:javax.microedition.io.Connector.file.read
,写入:javax.microedition.io.Connector.file.write
)在JAD文件中
采购证书 此链接Java ME signing for dummies