2014-09-02 75 views
0

在,如果我点击“生成PDF”按钮,然后PDF是在SD卡中建立。如果我打开这个PDF我的Android应用程序,我可以复制文本的android创建PDF,但我不韩元”这个。意思是我想只读 与生成的PDF文件。与只读权限

以下是代码,

public void createPDF() 
{ 
    Document doc = new Document(); 


    try { 
      String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/droidText"; 

      File dir = new File(path); 
       if(!dir.exists()) 
        dir.mkdirs(); 

      Log.d("PDFCreator", "PDF Path: " + path); 
      System.out.println("PDF Path: "+ path); 

      File file = new File(dir, "sample.pdf"); 
      FileOutputStream fOut = new FileOutputStream(file); 

      PdfWriter.getInstance(doc, fOut); 

      //open the document 
      doc.open(); 


      Paragraph p1 = new Paragraph("Hi! I am generating my first PDF using DroidText"); 
      Font paraFont= new Font(Font.COURIER); 
      p1.setAlignment(Paragraph.ALIGN_CENTER); 
      p1.setFont(paraFont); 

      //add paragraph to document  
      doc.add(p1); 


    } catch (DocumentException de) { 
      Log.e("PDFCreator", "DocumentException:" + de); 
    } catch (IOException e) { 
      Log.e("PDFCreator", "ioException:" + e); 
    } 
    finally 
    { 
      doc.close(); 
    } 

}  
+0

我没有尚未测试,请告诉我,如果这个工程:) – 2014-09-02 07:30:29

+0

你使用Apache POI? – 2014-09-02 09:07:34

+0

我使用droidText 0.2罐子 – Harshad07 2014-09-02 09:10:19

回答

0

你无法阻止用户正在改变存储在外部存储的数据,只要找到愿意在此援助申请 - 例如现成的文件管理器应用程序。

只要安全模型保持不变,存储在应用程序的专用存储区中的数据就可以受保护,无论是写入,还是来自其他应用程序的写入和读取。

但是,如果某个应用程序位于不同应用程序的专用存储区中,则它们不愿尝试访问由Intent指向的文件,即使已设置文件和目录权限位以便Android系统允许他们去。 (例如,至少某些版本的GMail拒绝附加一个不在外部存储器上的文件,尽管只要文件是世界可读的,它们就可以被欺骗。)

因此,将文件保存到内部存储器中,然后打开文件轮空给定的代码

mWebView.getSettings().setJavaScriptEnabled(true); 
mWebView.getSettings().setPluginsEnabled(true); 
mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+LinkToPDF); 
setContentView(mWebView);