いくつかのPDFファイルを表示する必要があるアプリがあります。ファイルはデバイスに対してローカルであり、デバイスはWebアクセスのない高セキュリティの場所で使用されます。
AndroidがPDFファイルを表示するためのネイティブ機能またはライブラリを取得するまで、私はAdobeReader.apkに依存しています。
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(dgfile), "application/pdf");
i.setClassName("com.adobe.reader", "com.adobe.reader.AdobeReader");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
// ctx is a passed-in Context of my main Activity
try {
ctx.startActivity(i);
}
catch (ActivityNotFoundException e) { // incase no viewer installed
Log.e("DG_External", "No viewer found!");
}
これは完全に機能しますが、表示が完了したら、停止してメインアプリに戻ります。このSOの質問に対する「勝者」の回答は、 StartActivityForresult()を使用した場合、 finishActivity()で実行できると述べましたが、動作 させることができませんでした(停止したいアクティビティ)
それでも、StartActivityを次のように変更しました。
((Activity)ctx).startActivityForResult(i, 33); //!! // 33 = arbitrary r.c.
これにより、Adobe Readerは問題なく呼び出されましたが、...
((Activity)ctx).finishActivity(33);
...結果は得られませんでした。try / catchでラップしてみましたが、例外はスローされませんでした。
私は何を間違っているのですか、そしてどうすればこれを正しく行うことができますか?前もって感謝します!