`
fonter
  • 浏览: 869226 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

解决java.lang.SecurityException: Access denied

    博客分类:
  • J2ME
阅读更多

NOKIA的一些目录不允许创建文件,所以会抛出java.lang.SecurityException: Access denied,只需做个提示就行了,或引导用户进入其子目录创建文件,问题便能解决,示例代码如下:

 

	private void createFile(String fileName) {
		String fileExt = "";
		{
			int idx = fileName.lastIndexOf('.');
			if (idx > 0) {
				fileExt = fileName.substring(idx, fileName.length());
				fileName = fileName.substring(0, idx);
			}
		}
		try {
			currDir = (FileConnection) Connector.open("file:///" + currDirName
					+ fileName + fileExt, Connector.WRITE);
			currDir.create();
		}catch (SecurityException e) { 
			Alert alert = new Alert("Error!", "Can not access/delete file "
					+ fileName + " in directory " + currDirName
					+ "\nException: " + e.getMessage(), null, AlertType.ERROR);
			alert.setTimeout(Alert.FOREVER);
			FileMIDlet.display.setCurrent(alert);			
		}catch (IOException e) {
			e.printStackTrace();
			try {
				currDir = (FileConnection) Connector.open("file:///"
						+ currDirName + fileName + "(" + genId() + ")"
						+ fileExt, Connector.WRITE);
				currDir.create();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				currDir = null;
			}
		}
	}

 

分享到:
评论
5 楼 bit6211 2009-12-11  
谢谢你的回答,我把Connector.READ_WRITE改为Connector.WRITE,异常依旧。我看一下你的参考文献吧。
4 楼 fonter 2009-12-11  
bit6211 写道
你好,非常感谢你的回答。这几天一直找时间按你说的来测试,但还是有许多问题,再次向你请教,麻烦了。
我的目的是想把拍到的相片存到存储卡中,不想存到RMS中,因为存储卡比较大(2G)。我的代码如下:
public void save(){
  String name=imageName.getString();  
          String initDir = System.getProperty("fileconn.dir.photos");
  System.out.println(initDir);
//   String initDir = "file:///e:/Nokia/Images/";
  try{
  System.out.println( initDir + name);
  FileConnection fc = (FileConnection) Connector.open(initDir + name, Connector.READ_WRITE);
          fc.create();
        
          OutputStream fos=fc.openOutputStream();
          fos.write(raw);
          fos.close();
  }catch(Exception e){
  e.printStackTrace();
  return;
  }
  Alert a = new Alert("Save Resuit:", "save success...", null, null);
  a.setTimeout(5000);
  mDisplay.setCurrent(a, f); 
         
  }
我分别模拟机Prototype_4_0_S40_128x128_MIDP_Emulator和Prototype_4_0_S60_MIDP_Emulator上测试。(security domain都为real_life,security domain为trusted_3rd_party我也测过)
情况如下:
1,Prototype_4_0_S40_128x128_MIDP_Emulator
当String initDir = System.getProperty("fileconn.dir.photos");时,
(即initDir = file:///c:/Nokia/Images/),报异常java.lang.SecurityException: Application not authorized to access the restricted API;
当String initDir = "file:///e:/Nokia/Images/";时,也报异常java.lang.SecurityException: Application not authorized to access the restricted API。
2,Prototype_4_0_S60_MIDP_Emulator
当String initDir = System.getProperty("fileconn.dir.photos");时,
(即initDir = file:///c:/Nokia/Images/),报异常java.lang.SecurityException: Application not authorized to access the restricted API;
当String initDir = "file:///e:/Nokia/Images/";时,也报异常java.lang.SecurityException: Application not authorized to access the restricted API。

然后我在真机nokia6300上测试,情况如下:
String initDir = System.getProperty("fileconn.dir.photos");和
String initDir = "file:///e:/Nokia/image/";时,都出现提示:应用软件被设为不允许访问。

请问我想把相片存到内存卡中,我应该怎么写?谢谢。



会不会是Connector.READ_WRITE这里问题,Connector.WRITE,http://www.forum.nokia.com/info/sw.nokia.com/id/82644083-2f4b-4775-a292-c02d6bf5be57/Introduction_To_The_FileConnection_API_v1_1.zip.html这里有个例子,也是写到fileconn.dir.photos的,可能看看!
3 楼 bit6211 2009-12-11  
你好,非常感谢你的回答。这几天一直找时间按你说的来测试,但还是有许多问题,再次向你请教,麻烦了。
我的目的是想把拍到的相片存到存储卡中,不想存到RMS中,因为存储卡比较大(2G)。我的代码如下:
public void save(){
  String name=imageName.getString();  
          String initDir = System.getProperty("fileconn.dir.photos");
  System.out.println(initDir);
//   String initDir = "file:///e:/Nokia/Images/";
  try{
  System.out.println( initDir + name);
  FileConnection fc = (FileConnection) Connector.open(initDir + name, Connector.READ_WRITE);
          fc.create();
        
          OutputStream fos=fc.openOutputStream();
          fos.write(raw);
          fos.close();
  }catch(Exception e){
  e.printStackTrace();
  return;
  }
  Alert a = new Alert("Save Resuit:", "save success...", null, null);
  a.setTimeout(5000);
  mDisplay.setCurrent(a, f); 
         
  }
我分别模拟机Prototype_4_0_S40_128x128_MIDP_Emulator和Prototype_4_0_S60_MIDP_Emulator上测试。(security domain都为real_life,security domain为trusted_3rd_party我也测过)
情况如下:
1,Prototype_4_0_S40_128x128_MIDP_Emulator
当String initDir = System.getProperty("fileconn.dir.photos");时,
(即initDir = file:///c:/Nokia/Images/),报异常java.lang.SecurityException: Application not authorized to access the restricted API;
当String initDir = "file:///e:/Nokia/Images/";时,也报异常java.lang.SecurityException: Application not authorized to access the restricted API。
2,Prototype_4_0_S60_MIDP_Emulator
当String initDir = System.getProperty("fileconn.dir.photos");时,
(即initDir = file:///c:/Nokia/Images/),报异常java.lang.SecurityException: Application not authorized to access the restricted API;
当String initDir = "file:///e:/Nokia/Images/";时,也报异常java.lang.SecurityException: Application not authorized to access the restricted API。

然后我在真机nokia6300上测试,情况如下:
String initDir = System.getProperty("fileconn.dir.photos");和
String initDir = "file:///e:/Nokia/image/";时,都出现提示:应用软件被设为不允许访问。

请问我想把相片存到内存卡中,我应该怎么写?谢谢。

2 楼 fonter 2009-12-07  
bit6211 写道
你好,请问在模拟机上运行不会抛出java.lang.SecurityException: Access denied异常,而在真机上测试会抛出java.lang.SecurityException: Access denied异常,这是什么原因呢?是否是因为权限问题,我把权限设为最大maximum。谢谢。

一般出现这种异常有两种情况,一、写文件时文件名重复,二、文件目录不能写入,第一种可用上面的CODE的解决,第二种你可提示用户些目录不给写入,请到别一个目录,NOKIA的机子一般都是在C盘私有目录时会不给写入,再进入下一层可以写入。而写入卡时不会出现这个异常!
1 楼 bit6211 2009-12-07  
你好,请问在模拟机上运行不会抛出java.lang.SecurityException: Access denied异常,而在真机上测试会抛出java.lang.SecurityException: Access denied异常,这是什么原因呢?是否是因为权限问题,我把权限设为最大maximum。谢谢。

相关推荐

    jboss7.1.1下报java.lang.SecurityException: JCE cannot authenticate the provider BC

    综上所述,解决“jboss7.1.1下报java.lang.SecurityException: JCE cannot authenticate the provider BC”问题涉及对Java加密机制、Bouncy Castle库以及JBoss服务器的深入理解。通过正确配置和调试,这个问题是可以...

    bcprov加密库

    org.bouncycastle.openssl.PEMException: problem parsing ENCRYPTED PRIVATE KEY: java.lang.SecurityException: JCE cannot authenticate the provider BC at org.bouncycastle.openssl.PEMReader$...

    Android MediaProjection截屏&录屏-适配Android

    Android Media...1、解决Android Q中java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION 异常 2、targetSdk 32可用

    反复重启无法进入桌面log

    05-27 15:35:11.487 E/AndroidRuntime( 2352): java.lang.RuntimeException: Unable to create service com.android.systemui.keyguard.KeyguardService: java.lang.SecurityException: read wallpaper: Neither ...

    system.Security.SecurityException 不受信任

    标题 "system.Security.SecurityException 不受信任" 指的是在编程过程中遇到的一种特定错误,它属于 .NET Framework 的安全异常类型。此异常通常发生在代码尝试执行一个被安全策略禁止的操作时,例如访问受保护的...

    Android Caused by: java.lang.ClassNotFoundException解决办法

    Android Caused by: java.lang.ClassNotFoundException解决办法 出现问题: 08-13 18:29:22.924: E/AndroidRuntime(1875): Caused by: Java.lang.ClassNotFoundException:XXXXX in loader dalvik.system....

    J2ee直接访问数据库步骤

    在J2EE(Java 2 Platform, Enterprise Edition)开发中,直接访问数据库通常是通过Java的JDBC(Java Database Connectivity)API来实现的。下面将详细解释J2EE直接访问数据库的步骤,以及涉及的相关知识点。 **步骤...

    JAVA常见异常解析,面试用

    - **java.lang.SecurityException**:在安全管理器存在且拒绝访问时抛出。 - **java.io.EOFException**:在输入流到达文件结尾时,尝试读取更多数据时抛出。 - **java.io.FileNotFoundException**:打开或创建指定的...

    深入研究java.lang.Runtime类.doc

    "深入研究java.lang.Runtime类" java.lang.Runtime 类是 Java 语言中一个非常重要的类,它提供了访问当前 Java 应用程序的 Runtime 环境的能力。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其...

    java.lang.SecurityException(解决方案).md

    项目中碰到的,记录一下解决方案

    java异常详解

    - **`java.lang.SecurityException`**:当违反安全策略时抛出,例如试图访问受限资源。 - **`java.io.FileNotFoundException`**:当试图打开不存在的文件时抛出。 - **`java.lang.NegativeArraySizeException`**:当...

    commons-beanutils-1.7.0

    java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package at java.lang....

    Java的异常类

    - **`java.lang.SecurityException`**:违反安全原则异常,例如尝试执行未授权的操作。 - **`java.io.EOFException`**:文件已结束异常。 - **`java.io.FileNotFoundException`**:文件未找到异常。 - **`java....

    标准省级数据库(1980-2005).rar

    1980-2005年 全国各省经济数据,好数据的啊,请下载,各位网友

    常见异常处理方案

    9. **`java.lang.SecurityException`**: 安全管理器阻止了请求的操作。在执行敏感操作(如文件系统访问)时,需要确保有足够的权限。 10. **`java.io.IOException`**: 表示在输入/输出过程中发生了错误。在处理...

    Java异常大全

    - **`java.lang.SecurityException`**:当安全策略阻止执行某些操作时抛出。 - **`java.io.EOFException`**:当读取文件或流时达到文件末尾但数据还未完全读取完成时抛出。 - **`java.io.FileNotFoundException`**:...

Global site tag (gtag.js) - Google Analytics