【问题标题】:Unable to save canvas data无法保存画布数据
【发布时间】:2012-07-24 07:10:24
【问题描述】:

07-24 12:36:23.742: W/System.err(10386): java.io.IOException: 权限被拒绝 07-24 12:36:23.750: W/System.err(10386): at java.io.File.createNewFileImpl(本机方法)07-24 12:36:23.750: W/System.err(10386):在 java.io.File.createNewFile(File.java:1257) 07-24 12:36:23.750: W/System.err(10386): 在 com.android.SignaturePage.FileWrite(SignaturePage.java:414) 07-24 12:36:23.750: W/System.err(10386): 在 com.android.SignaturePage$2.onClick(SignaturePage.java:132) 07-24 12:36:23.750: W/System.err(10386): 在 android.view.View.performClick(View.java:2485) 07-24 12:36:23.750: W / System.err(10386):在 android.view.View$PerformClick.run(View.java:9080) 07-24 12:36:23.750: W / System.err(10386):在 android.os.Handler.handleCallback(Handler.java:587) 07-24 12:36:23.750:W / System.err(10386):在 android.os.Handler.dispatchMessage(Handler.java:92) 07-24 12:36:23.750:W / System.err(10386):在 android.os.Looper.loop(Looper.java:130) 07-24 12:36:23.750: W / System.err(10386):在 android.app.ActivityThread.main(ActivityThread.java:3687) 07-24 12:36:23.750:W / System.err(10386):在 java.lang.reflect.Method.invokeNative(Native Method) 07-24 12:36:23.750:W / System.err(10386):在 java.lang.reflect.Method.invoke(Method.java:507) 07-24 12:36:23.750: W / System.err(10386):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 07-24 12:36:23.750: W/System.err(10386): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 07-24 12:36:23.750:W / System.err(10386):在 dalvik.system.NativeStart.main(Native Method)

出现错误的代码片段

public  void FileWrite(File aPath,String aBody)
{
    try 
    {
        //System.out.println("@@@@ Inside Try FileWrite @@@@");
        Log.e("BEFORE FILE","BEFORE FILE");
        aPath.createNewFile();
        Log.e("AFTER FILE","BEFORE AFTER");
        PrintWriter out1 = new PrintWriter(aPath);
        out1.write(aBody);  
        //System.out.println (aBody.trim());
        out1.flush();
        out1.close();
    }
    catch (IOException ioe)
    {
        //System.out.println("@@@@ Inside Catch FileWrite @@@@"); 
        ioe.printStackTrace();
    }
}

清单文件具有以下权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

请帮助我解决问题。 aPath.createNewFile(); 是发生错误的行

【问题讨论】:

  • 尝试 { FileWrite(SignSave,"confirmation"); File SignSave=new File("data/data/com.myapp.android.creditcardreader/SignConfirmation"); }

标签: android canvas


【解决方案1】:

&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"&gt;&lt;/uses-permission&gt; 添加到您的清单中,它应该可以工作。

【讨论】:

  • 已经拥有这些权限
  • 如何构建路径?你尝试做 getDir("signature.png", MODE_WORLD_READABLE)
【解决方案2】:
 File SignSave=new File("data/data/com.myapp.android.creditcardreader/SignConfirmation"); 
  1. 通常访问此路径需要 root 权限
  2. 你忘记了数据中的第一个/File("/data/...);

编辑:

您应该将文件存储在sdcard 中。你可以通过这种方式访问​​sdcard的根:

File root = Environment.getExternalStorageDirectory()
File aPath = new File (root, "confirmation");
aPath.createNewFile();

【讨论】:

  • 07-24 12:54:58.523: V/log_tag(10844): java.io.FileNotFoundException: /data/data/com.epaisa.android.creditcardreader/signature.png (权限被拒绝) 07-24 12:54:58.531: W/System.err(10844): java.io.IOException: Permission denied
  • 你知道“root权限”是什么意思吗?
  • 对此一无所知。要不要换个目录?
  • 超级用户 (root) 是用于系统管理的特殊用户帐户。
  • 按照您的建议进行了更改,但仍然发现问题 07-24 13:13:50.320: W/System.err(11226): java.io.FileNotFoundException: /mnt/sdcard (是一个目录)
猜你喜欢
  • 1970-01-01
  • 2013-08-20
  • 2012-02-01
  • 2011-06-25
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多