2011-10-25 13 views
1

私のアンドロイドアプリからpdfファイルを開く必要があります。私は、pdfをアプリケーションパッケージフォルダ(/data/data/com.app.example/files)に保存しました。私はアンドロイドエミュレータにAdobe Readerのアプリをインストールしました。問題は、私がAdobe Readerでpdfファイルを開こうとすると、次のメッセージが表示されます。無効なファイルパスです。Androidでpdfを開く際の問題:無効なファイルパス

なぜこのようなことが起こっているのかわかりませんが、私はこの時点で固執しています。私のコンピュータで開くことができるので、ファイルは正しく保存されます。ここで

は、コードは次のとおりです。事前に

HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(url); 
     try { 
      HttpResponse response = client.execute(request); 
      request(response, file_name); 

      File file = new File("data/data/com.app.example/files/"+file_name); 

      PackageManager packageManager = getPackageManager(); 
      Intent testIntent = new Intent(Intent.ACTION_VIEW); 
      testIntent.setType("application/pdf"); 
      List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY); 
      if(file.exists()) 
      { 
        if (list.size() > 0 && file.isFile()) { 
         Intent intent = new Intent(); 
         intent.setAction(Intent.ACTION_VIEW); 
         Uri uri = Uri.fromFile(file); 
         intent.setDataAndType(uri, "application/pdf"); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  

         startActivity(intent); 
        }else 
        { 
         System.out.println("NO APPs TO OPEN PDFs."); 
        } 
      } 
      else 
      { 
        System.out.println("FILE DOES NOT EXIST."); 
      }   
     }catch(Exception ex){ 
      System.out.println("Failed!"); 
      ex.printStackTrace(); 
     } 


public String request(HttpResponse response, String file){ 
     String result = ""; 
     try{ 
      InputStream in = response.getEntity().getContent(); 
      FileOutputStream f = openFileOutput(file, MODE_WORLD_WRITEABLE); 
      byte[] buffer = new byte[in.toString().length()]; 
      int len1 = 0; 
      int counter = 0; 
      while ((len1 = in.read(buffer)) > 0) { 
       f.write(buffer, 0, len1); 
       counter++; 
      } 
      f.close(); 
     } 
     catch(Exception ex){ 
      result = "Error"; 
     } 
     return result; 
    } 

感謝。

よろしくお願いします。

答えて

4

PDFファイルは、独自のパッケージ内に存在し、アドビリーダーは、Androidアプリケーションの開発のために許可されていない、あなたのパッケージからPDFファイルにアクセスしようとするためです。

ファイルをSDCARDに保存してから開くことができます。

+0

Thanks Draxこれで私はxDの開発を続けます。 – sharnak82

関連する問題