URLでインターネットからpdfファイルを正常にダウンロードするアプリを作成しました。app_Pdf フォルダを作成して、アプリの内部ストレージに保存します。しかし今、私はAdobe pdfビューアのようなサードパーティのアプリでそのファイルを開きたいと思っています.ect. 私は非常に多くの方法を試しましたが、この問題について多くのことを考えています。私はまた、最初のコンテンツプロバイダーの作成について読み、このクエストでPDFファイルを提供しました:内部メモリに保存されたPDFを開く方法ですが、エラーが発生します:無効なパス....
この問題を解決するために仲間を助けてください。動作するコードを教えていただければ幸いです。よろしくお願いします.....
これは、ファイルをダウンロードして内部メモリに保存する方法です。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
downloadFile("http://www.testdemo.net/testdemo/test/test/test.pdf");
}
public boolean downloadFile(String path)
{
try
{
URL url = new URL(path);
URLConnection ucon = url.openConnection();
ucon.setReadTimeout(5000);
ucon.setConnectTimeout(10000);
InputStream is = ucon.getInputStream();
BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);
File file = new File(getDir("Pdf", Context.MODE_WORLD_READABLE) + "/yourfile.pdf");
if (file.exists())
{
file.delete();
}
file.createNewFile();
FileOutputStream outStream = new FileOutputStream(file);
byte[] buff = new byte[5 * 1024];
int len;
while ((len = inStream.read(buff)) != -1)
{
outStream.write(buff, 0, len);
}
outStream.flush();
outStream.close();
inStream.close();
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
return true;
}
}
そして、これは私が内部ストレージからpdfを表示しようとした方法です:
File file = new File(getDir("Pdf", Context.MODE_PRIVATE) + "/yourfile.pdf");
Uri internal = Uri.fromFile(file);
viewPdf(internal);
private void viewPdf(Uri file) {
Intent intent;
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(file, "application/pdf");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("No Application Found");
builder.setMessage("Download one from Android Market?");
builder.setPositiveButton("Yes, Please",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://details?id=com.adobe.reader"));
startActivity(marketIntent);
}
});
builder.setNegativeButton("No, Thanks", null);
builder.create().show();
Log.v("","Exception : "+e);
}
私を助けてください....