2011-12-16 20 views
5

Mobil dahili bellekte saklanan bir pdf'yi açmak istiyorum ... Dosya yolunu Uri'ye aktarmaya çalışıyorum .. ama devam ediyor bana bu hatayı gösteriliyor)Dahili bellekte saklanan pdf okuma (Dosya yolu geçerli değil)

targetFile.exists ait

targetFile=new File("/data/data/package Name/app_mydir/test.pdf"); 

      } 

     Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(targetFile), "application/pdf"); 


       startActivity(intent); 
+0

Dosyanız nasıl kaydedilir? Genellikle veri dosyaları, kök dizininde değil, uygulamanızın direktifindeki "files" adlı bir klasörün içinde yer alır. – FoamyGuy

+0

Bu dizinini kullanıyorum = getBaseContext(). GetDir ("mydir", Context.MODE_PRIVATE); \t \t \t} \t Dosya No.1 = new File (directory, PdfName); – Reham

+0

"getBaseContext()" ifadesini "YourActivityName.this" ile değiştirin. Ayrıca, dosyayı başka bir uygulamaya iletmeye çalışıyorsanız, muhtemelen MODE_PRIVATE değerini kullanamayacaksınız. – FoamyGuy

cevap

0

Kontrol çıkışı (.. "dosya yolu geçerli değil" ama ben doğru yolu atıyorum eminim;

Eğer bu durum doğru döndürürse, aksi takdirde yolunuzla ilgili yanlış bir şeyler yapabilirsiniz.

+0

ben denedim .. doğru geri dön ... yolunda neyin yanlış olduğunu bilmiyorum .. – Reham

+0

Muhtemelen tam bir stacktrace göndermelisiniz. –

8

Uygulamanızın dahili depolama dizinindeki dosyalar varsayılan olarak uygulamanıza özeldir. Bu, hiçbir PDF-Reader uygulamasının dosyasını okuyamayacağı anlamına gelir (uygulamalarınız pid ile çalışmadığı için - okuma izni verilmez).

Context.MODE_WORLD_READABLE bayrağını kullanarak bu PDF'yi diğer uygulamalar için açık okuma izinleriyle kaydetmeniz gerekir. Tam olarak nasıl yapılacağını data storage documentation bakın.

Ayrıca (yukarıda docs belirtildiği gibi) okuyabilir ve iç dizinde dosyaları yazmak için Context.openFileOutput() ve Context.openFileInput() kullanın. Böyle yolları değiştirmeyin, değişebilirler.

İlgili konular