2

いくつかの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でラップしてみましたが、例外はスローされませんでした。

私は何を間違っているのですか、そしてどうすればこれを正しく行うことができますか?前もって感謝します!

4

1 に答える 1

1

これについて考える別の方法は、アプリをディスプレイの上部に移動し、AdobeReaderを背景に移動するにはどうすればよいですか?

startActivity()あなたの活動の1つを呼び出します。アプリ内の何かが、「PC上のユーザーがドキュメントを閉じる」と判断しています。その何かが呼び出すことができますstartActivity()

于 2012-07-11T22:28:39.917 に答える