私は自分のアプリケーションで開かれたpdfを持っています。ユーザーがボタンをクリックすると、application/pdfのopenwithオプションが表示されます。ユーザーは自分の選択(例えばadobe reader)を選択し、開かれたpdfファイルはユーザーの選択(この場合adobereader)で表示する必要があります。私は開いているPDFのために私と一緒にbytearrayと入力ストリームを持っています。openwith with openwithオプションandroid
答えて
File file = new File("filepath");
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(Uri.fromFile(file),"application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent = Intent.createChooser(target, "Open File");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Instruct the user to install a PDF reader here, or something
}
EDIT、PDFを作成した後、この
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/"+ filename);
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(Uri.fromFile(file),"application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent = Intent.createChooser(target, "Open File");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Instruct the user to install a PDF reader here, or something
}
EDIT 1
OutputStream out = new FileOutputStream("out.pdf");
out.write(bArray);
out.close();
を試し2
File myFile = new File("out.pdf");
OutputStream out = new FileOutputStream(myFile);
out.write(bytArray);
out.close();
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(Uri.fromFile(myFile),"application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent = Intent.createChooser(target, "Open File");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Instruct the user to install a PDF reader here, or something
}
この月は、PDFファイル作成
EDIT 3
次のコードは、自分で試験し、uは
ををしたいと、それが働いているのに役立ちます:
File resolveMeSDCard = new File("/sdcard/download/media/output.pdf");
public void createPDF()
{
byte[] byt = new byte[]{1,2,3,4,5};
File mediaDir = new File("/sdcard/download/media");
if (!mediaDir.exists()){
mediaDir.mkdir();
}
FileOutputStream fos;
try {
//File resolveMeSDCard = new File("/sdcard/download/media/output.pdf");
resolveMeSDCard.createNewFile();
fos = new FileOutputStream(resolveMeSDCard);
fos.write(byt);
fos.close();
System.out.println("Your file has been written");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Your file has not been written");
}
}
PDFファイルを開きます:
public void openPDF()
{
Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(Uri.fromFile(resolveMeSDCard),"application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent = Intent.createChooser(target, "Open File");
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Instruct the user to install a PDF reader here, or something
}
}
のmanifest.xml
のようにコード順、以下の許可
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Note :
1.Changeを追加君は 欲しいです。
2.call createPDF()とOpenPDF()。
これは動作コードです。
返信ありがとうSathish ..しかし、私のファイルは物理的には利用できません。私はbytearrayとinputstreamのファイルも持っています... –
最初にbyteArrayからpdfを作成します。私の編集を参照してください1 –
ファイル内のファイルパスは何ですか...私はout.pdfを持っている代わりにファイルがありません... –
アプリでopenwithをクリックしたとき...私のファイルなどのコンテンツプロバイダを使用してイムは、物理的に利用できません...
try {
createCachedFile(this, attachmentFileName, bytes);
startActivity(pdfOpenWith(this, attachmentFileName, bytes));
}catch (IOException e) {
e.printStackTrace();
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "Not available on this device.", Toast.LENGTH_SHORT).show();
}
public void createCachedFile(Context context, String fileName, byte[] content) throws IOException {
File cacheFile = new File(context.getCacheDir() + File.separator + fileName);
cacheFile.createNewFile();
BufferedOutputStream bostream = new BufferedOutputStream(new FileOutputStream(cacheFile));
bostream.write(content);
bostream.flush();
bostream.close();
}
public static Intent pdfOpenWith(Activity context, String fileName, byte[] bytecontent)
{
Intent pdfintent = new Intent(Intent.ACTION_VIEW);
//pdfintent.setType("application/pdf");
Uri contenturi = Uri.parse("content://" + AttachFileProvider.AUTHORITY + "/" + fileName);
Toast.makeText(context, fileName, Toast.LENGTH_LONG).show();
pdfintent.setDataAndType(contenturi, "application/pdf");
pdfintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
pdfintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return pdfintent;
- 1. emacs/openwithプログラムに引数を渡す方法は?
- 2. OpenWithを動作させるためにApp.csのOnFileActivatedイベントをオーバーライドする方法
- 3. WindowsのJavaアプリケーションの「openwith」名を置き換える方法はありますか?
- 4. Sendgrid with Cloud9 with WebApi Pythonオプション
- 5. SSDT ColumnStoreIndex WITHオプション
- 6. jbooss with RUNASISオプション
- 7. オプション国html with mysql
- 8. MarkItUpでテキスタイルセットを設定してください!
- 9. Rails simple_formアソシエーションselect with createオプション
- 10. facebook fb.ui apprequests with skipオプション?
- 11. Laravel Union with and joinオプション
- 12. Android sqlite with with duplicate ids
- 13. Proguard with android project with(compatible)libraries
- 14. android with WCF for service with json
- 15. HttpUrlConnection with Android Wear with connected phone
- 16. AndroidアクセスFirebase with keys with spaces
- 17. Black Screen with MSAA with Android with Vulkan
- 18. ダイナミックタイムテーブルandroid with unity
- 19. Issue with Android TranslateAnimation
- 20. OpenCV C++ with Android
- 21. android with XMPP
- 22. Android WebServices with ksoap2
- 23. EditTex Validation with android
- 24. android layout_weight with RelativeLayout
- 25. Android with wit.ai
- 26. レルムAndroid with relationship
- 27. Wikitude with Androidスタジオ
- 28. libxml2 with Android NDK
- 29. Android Central with GattServer
- 30. android with Laravel
そして、あなたの質問は何ですか? – AxelH
こんにちは、デフォルトで表示されます。これまでに何を試みましたか? –
openwithウィンドウがデフォルトで表示されますが、アプリケーションのボタンをクリックするとopenwithの意図が表示され、ユーザーはadobe readerを選択します。これで、adobeReaderで同じpdfドキュメントのpdfバイトを表示します。実際に私の初心者はアンドロイドにして、ここでどのイベントが起きるのかを特定することができません。 –