2016-11-01 3 views
0

Я хотел бы открыть pdf-файл (который доступен в папке «Загрузка» на телефоне Android) во время щелчка на «pdfButton» Во время выполнения ничего не происходит, нет ни одного отображаются ошибки или файл pdf. Может кто-нибудь, пожалуйста, помогите?Pdf-файл не открывается в Android

package com.mycompany.myfirstglapp; 
import android.app.Activity; 
import android.content.ActivityNotFoundException; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.SurfaceView; 
import android.webkit.WebView; 
import android.widget.Toast; 
import java.io.File; 

/** 
* Created by admin on 1/11/2016. 
*/ 

public class PdfActivity extends Activity { 
    private SurfaceView surface; 
    Button pdfButton; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pdf); 
     surface = (SurfaceView) findViewById(R.id.pdfSurface); 
     pdfButton = (Button) findViewById(R.id.pdfView); 

     pdfButton .setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
        // On click will call the showPdf method to display the pdf file in sd card or downloads 

        showPdf(view); 
       } 
      }); 



    } 


    public void showPdf(View view) { 

     // The pdf file [LawsofthegamewebEN_Neutral.pdf] is avaialble in Android > Downloads folder. 

     File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/LawsofthegamewebEN_Neutral.pdf"); 

     if (file.exists()) { 
      Uri path = Uri.fromFile(file); 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(path, "application/pdf"); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

      try { 
       startActivity(intent); 
      } 
      catch (ActivityNotFoundException e) { 
       Toast.makeText(PdfActivity.this, 
         "No Application Available to View PDF", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } 



} 

ответ

1

Если вы шагаете через код с отладчиком, или поместить несколько операторов лесозаготовительных, я подозреваю, что вы увидите, что file.exists() возвращается false. И в данный момент вы ничего не делаете в этом случае.

Я хотел бы, чтобы открыть PDF-файл (который доступен в папке Downloads в Android телефон)

То есть не там, где ваш код смотрит. Заменить:

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/LawsofthegamewebEN_Neutral.pdf"); 

с:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "LawsofthegamewebEN_Neutral.pdf"); 

отметить также, что ваш file.exists() вызов означает, что вам нужно будет держать READ_EXTERNAL_STORAGE разрешение.

+0

Я попытаюсь опубликовать результат – soccerway

+0

Решил проблему :) – soccerway

Смежные вопросы