私はアプリ内でこれらのボタンを一度押すとアプリケーション内から.PDFファイルを開きます。Androidアプリ(ローカルに保存されている)の.PDFを開くについて
自分のファイルを/ res/rawディレクトリに保存しました。それらをfile1.PDF、file2.PDFなどと呼ぼう。
public void onClick(View v) {
switch (v.getId()) {
case R.id.file1:
Log.i(TAG, "Button one pressed");
openPDF(Uri.parse("android:resource://test.pdf.files/raw/res/file1.PDF"));
break;
}}
上記はonClickのコードです。 UnderneathはopenPDF関数のコードです。
public void openPDF(Uri url)
{
File file = new File(url.toString());
Log.i(TAG, url.toString());
if (file.exists())
{
Log.i(TAG, "File exists");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
try
{
getApplicationContext().startActivity(intent);
}
catch (ActivityNotFoundException e)
{
Log.e(TAG,"Activity not found exception");
}
}else{
Log.i(TAG,"404: File not found!");
}
}
私の問題は次のとおりです。if(file.exists())チェックを通過することはできません。私は、ファイルファイルをUri、URI、Stringの両方に変換しようとしましたが、 "res/raw/file1.PDF"、 "raw/file.PDF"、 "test" .pdf.files/raw/res/file1.PDF "を参照してください。しかし、これらのケースのいずれにおいても、私が開くファイルを見つけることができません。なぜこれがうまくいかないのか誰にでも見られますか?
私はこれを何時間も修正しようとしていました。私がもし(file.exists())を乗り越えることはできません
ええ、私も今全く新しい方法を試しました。 uriで送信するのではなく、単純に1-4からintを送信します。そして、openPDFメソッドの中には、次のようなスイッチがあります。 switch(fileNumber){ case 1: ファイルfile = newファイル( "android:resource://test.file.pdf/res/raw/file1.PDF" ); 休憩。 .... } これは、最初の理由と同じ理由で機能しませんか?私はまだ私のファイルを見つけることができないので。 – Tom
@TomErikHøvring:私の答えをもう一度読んでください。 **リソースはファイルではありません**。 – CommonsWare
申し訳ありませんが、誤解されているはずです。私はUri中間部分を削除することで、ファイルを直接開くことができると考えました。 – Tom