Java 按下按钮时从资产或原始文件夹中打开PDF文件的代码
在stackoverflow上找到了很多与这个问题相关的答案,但我还没有成功地实现其中的任何一个。我猜这是因为人们发布特定的代码,而我对Java的了解还不够,无法对其进行修改以适应我的应用程序 我想要的是打开保存在原始文件夹中的PDF文件所需的特定代码行(最初是assets文件夹,但这里的答案是assets文件夹中的项目会被压缩,PDF文件应转到原始文件夹) 从我收集到的其他答案来看,首先需要将文件复制到内部存储器中才能查看。这意味着授予它读写存储权限 这里的许多答案还向您展示了如何在应用程序中打开它(使用库或WebView),或者在应用程序启动时自动打开它。这两种行为我都不想要。我希望它通过意图在点击按钮时打开(这样它就可以通过设备上已有的第三方PDF查看器打开) 我在Android Studio中创建了一个简单的应用程序,只需一个活动和一个按钮。当按下时,它会显示一个吐司,所以我知道它设置正确。我还在每个文件夹(资产和原始)中保存了一个PDF文件。请告诉我如何进行 MainActivity.java:Java 按下按钮时从资产或原始文件夹中打开PDF文件的代码,java,android,pdf,android-intent,Java,Android,Pdf,Android Intent,在stackoverflow上找到了很多与这个问题相关的答案,但我还没有成功地实现其中的任何一个。我猜这是因为人们发布特定的代码,而我对Java的了解还不够,无法对其进行修改以适应我的应用程序 我想要的是打开保存在原始文件夹中的PDF文件所需的特定代码行(最初是assets文件夹,但这里的答案是assets文件夹中的项目会被压缩,PDF文件应转到原始文件夹) 从我收集到的其他答案来看,首先需要将文件复制到内部存储器中才能查看。这意味着授予它读写存储权限 这里的许多答案还向您展示了如何在应用程序中
public class MainActivity extends AppCompatActivity {
public void showPDF (View view) {
Toast.makeText(MainActivity.this, "button pressed", Toast.LENGTH_LONG).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}}
活动\u main.xml:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="showPDF"
android:text="Button"
tools:layout_editor_absoluteX="135dp"
tools:layout_editor_absoluteY="171dp" />
请帮忙。我一直在寻找一个答案超过4天了,现在没有结果
最初是资产文件夹,但这里的答案是资产文件夹中的项目会被压缩,PDF文件应该转到原始文件夹
这通常不是问题
从我收集到的其他答案来看,首先需要将文件复制到内部存储器中才能查看
这是当今的惯例,假设您所说的内部存储是指。然后,您将使用FileProvider
使PDF可供PDF查看器应用程序使用
我还在每个文件夹(资产和原始)中保存了一个PDF文件
使用getAssets()。在上下文
(例如,活动
)上打开(…)
,以获取资产上的输入流
,其中…
是资产
与PDF的相对路径。因此,如果您的PDF位于assets/doc.PDF
中,请将“doc.PDF”
传递到open()
或者,在上下文上使用getResources().openRawResource()
在原始资源上获取InputStream
将PDF复制到本地文件需要:
- 在所需位置创建
文件
对象(例如新文件(getFilesDir(),“doc.pdf”)
- 为该文件创建
FileOutputStream
- 使用标准Java文件I/O将字节从
输入流
复制到文件输出流
然后,您可以将FileProvider
(或子类)配置为从保存PDF的任何位置为其提供服务,生成Uri
,并创建ACTION\u视图
Intent
,以打开PDF查看器
这说明了所有这一切,尽管我启动PDF viewer是启动活动的一部分,而不是单击按钮。有点晚了,但是,此代码段的路径是原始的,您只能使用此代码访问PDF文件
我希望它能帮助一些人
private fun openPDFFile() {
val intent = Intent("android.intent.action.GET_CONTENT")
intent.type = "application/pdf"
startActivityForResult(intent, OPERATION_CHOOSE_PDF)
}
嘿。谢谢你的详细解释。不幸的是,我对Java真的很陌生,不能把你给我的代码拼凑起来让它工作。在这之前,我能做的最多的就是在屏幕上显示一个图像,同时它会旋转很多次。如果不太麻烦的话,你能写下实际的代码吗?我知道我在要求一个这里有一点讲义,但我已经能够使用stackoverflow上的答案使所有事情都顺利进行。我完全无法让它工作,我已经找了好几天了。非常感谢您的帮助。