我想从我的活动按钮操作的资产文件夹中打开一个 PDF,我使用了以下代码,但没有任何反应。
public class AssetsProvider extends ContentProvider {
@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode ) throws FileNotFoundException
{
AssetManager am = getContext( ).getAssets( );
String file_name = uri.getPath().substring(1, uri.getPath().length());
if( file_name == null )
throw new FileNotFoundException( );
AssetFileDescriptor afd = null;
try
{
afd = am.openFd( file_name );
}
catch(IOException e)
{
e.printStackTrace( );
}
return afd;
}
@Override
public String getType( Uri p1 )
{
return null;
}
@Override
public int delete( Uri p1, String p2, String[] p3 )
{
return 0;
}
@Override
public Cursor query( Uri p1, String[] p2, String p3, String[] p4, String p5 )
{
return null;
}
@Override
public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal )
{
return super.query( uri, projection, selection, selectionArgs, sortOrder, cancellationSignal );
}
@Override
public Uri insert( Uri p1, ContentValues p2 )
{
return null;
}
@Override
public boolean onCreate( )
{
return false;
}
@Override
public int update( Uri p1, ContentValues p2, String p3, String[] p4 )
{
return 0;
}
}
它是由以下活动按钮操作触发的,并且从这里传递的 pdf 文件路径 url:
btn_help.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
new AssetsProvider().openAssetFile(Uri.parse("file:///android_asset/Guide.pdf"),null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
在 Manifest 上声明提供程序类,如下所示:
<provider
android:name="com.star.form.helper.AssetsProvider"
android:authorities="om.star.form.eform.helper"
android:grantUriPermissions="true"
android:exported="true" />
请指导我。