Otwórz PDF w aplikacji na Androida

Pracuję nad aplikacją, w której trzeba otworzyć plik pdf w urządzeniu,

Mam kod w sieci, który jest podobny do większości przykładów. Ale chodzi o to, że nie jestem w stanie otworzyć pliku, a kontrola przechodzi bezpośrednio do części "wyjątek".

Oto poniższy kod:

public class MyPDFDemo extends Activity 
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)   
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Button OpenPDF = (Button) findViewById(R.id.button);
    OpenPDF.setOnClickListener(new View.OnClickListener()
    { 
        public void onClick(View v) 
        {
            File pdfFile = new File("/sdcard/Determine_RGB_Codes_With_Powerpoint [PDF Library].pdf"); 
            if(pdfFile.exists()) 
            {
                Uri path = Uri.fromFile(pdfFile); 
                Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
                pdfIntent.setDataAndType(path, "application/pdf");
                pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                try
                {
                    startActivity(pdfIntent);
                }
                catch(ActivityNotFoundException e)
                {
                    Toast.makeText(MyPDFDemo.this, "No Application available to view pdf", Toast.LENGTH_LONG).show(); 
                }
            }

        }
    });

}

Kiedy uruchamiam ten kod: widziałem "brak aplikacji dostępnej do przeglądania pdf". Czy ktoś może mi pokazać plik pdf?

 16
Author: OMG Ponies, 2011-05-21

3 answers

Ponieważ twój blok catch ma ActivityNotFoundException, oznacza to, że nie masz żadnej aktywności/aplikacji, która może odczytać format pliku 'application / pdf'. Zainstaluj dowolną przeglądarkę pdf z Android Market (Adobe niedawno wydało ich), lub użyj wyżej wymienionej przeglądarki pdf open source, a twój problem najprawdopodobniej będzie rozwiązane.

Http://code.google.com/p/apv/downloads/list

Https://market.android.com/details?id=cx.hell.android.pdfview&feature=search_result

Po rozpoczęciu aktywności z podanymi paramami, wyszukuje wszystkie aplikacje/działania / zamiary, które są zarejestrowane w otwartym formacie pdf. Ponieważ nie masz żadnego w urządzeniu, otrzymujesz activitynotfoundexception

 9
Author: Ashok Felix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-06 08:32:42

Twój kod ma rację, użyłem również tego samego kodu, aby otworzyć plik pdf w przeglądarce.

Ponieważ nie masz zainstalowanej przeglądarki na urządzeniu, więc nie można jej otworzyć bez żadnej przeglądarki.

Możesz zainstalować Adobe reader dla Androida.

Nie mogę otworzyć pliku pdf w emulatorze, więc muszę przetestować za pomocą mojego urządzenia.

 2
Author: Yousuf Zaman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-01 12:00:46

Najpierw zainstaluj czytnik pdf na urządzeniu. następnie użyj tego kodu do odczytu pliku pdf z pamięci wewnętrznej.

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    final TextView tv = (TextView)findViewById(R.id.tv);
    Button bt=(Button)findViewById(R.id.openbtn);
    bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

    File pdfFile = new File(Environment.getExternalStorageDirectory(),"Leave.pdf");
    if(pdfFile.exists())
    {
    Uri path = Uri.fromFile(pdfFile);
    Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
    pdfIntent.setDataAndType(path, "application/pdf");
    pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    try{
        startActivity(pdfIntent);
    }catch(ActivityNotFoundException e){
        tv.setText("No Application available to view PDF");
    }
    }
    else
    {
        tv.setText("File not found");
    }

        }
    });

}

 2
Author: Kishor N R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 06:10:52