我在项目中使用this github来源。我在assets
文件夹中包含10个元素和10个不同PDF的列表视图。在1项活动中,我使用listview
和onItemClickListener
,如下所示:
ArrayAdapter arrayAdapter = new ArrayAdapter<>(this, R.layout.activity_policy_list, mobileArray);
ListView listView = (ListView) findViewById(R.id.policy_list);
listView.setAdapter(arrayAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(PolicyActivity.this, PdfViewerActivity.class);
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, getAssets() + "/dummy.pdf");
startActivity(intent);
}
});
PdfViewerActivity
类的代码如下:
package com.dell.eventapp.ui.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.dell.eventapp.R;
public class PdfViewerActivity extends net.sf.andpdf.pdfviewer.PdfViewerActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pdf_viewer);
}
@Override
public int getPreviousPageImageResource() {
return R.drawable.left_arrow;
}
@Override
public int getNextPageImageResource() {
return R.drawable.right_arrow;
}
@Override
public int getZoomInImageResource() {
return R.drawable.zoom_in;
}
@Override
public int getZoomOutImageResource() {
return R.drawable.zoom_out;
}
@Override
public int getPdfPasswordLayoutResource() {
return 0;
}
@Override
public int getPdfPageNumberResource() {
return 0;
}
@Override
public int getPdfPasswordEditField() {
return 0;
}
@Override
public int getPdfPasswordOkButton() {
return 0;
}
@Override
public int getPdfPasswordExitButton() {
return 0;
}
@Override
public int getPdfPageNumberEditField() {
return 0;
}
}
当我点击列表视图中的任何项目时,应打开新活动,并在新活动中查看PDF。当我运行我的代码时,我总是会收到此错误:
02-23 18:19:48.033 8982-8982/com.dell.eventapp I/PDFVIEWER: ST='file 'android.content.res.AssetManager@817d40c/dummy.pdf' not found'
我在github repo的问题中遇到了这个this issue。它说无法从Assets文件夹加载PDF。您应该在打开之前将其复制到SD卡上。我该如何解决这个问题?
答案 0 :(得分:0)
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, getAssets() + "/dummy.pdf");
getAssets()
会返回AssetManager
。 getAssets() + "/dummy.pdf"
在toString()
个实例上调用AssetManager
,然后向其/dummy.pdf
添加android.content.res.AssetManager@817d40c/dummy.pdf
。这就是你结束toString()
的原因。 AssetManager
上的{{1}}并没有以某种方式神奇地为您提供资产的文件系统路径......部分原因是资产不是设备上的文件。
我该如何解决这个问题?
或者:
按照该问题中的说明将资产复制到文件或
修改该库以支持资产,或
请勿使用该库,但请使用其他支持从资源显示PDF的内容