我想创建或找到使用预览选项在Android上读取PDF文件的应用。因此,它将所有页面的缩略图放在1上。
如何使用C#在Xamarin上执行此操作?
答案 0 :(得分:1)
请按照以下步骤操作。
步骤1:您必须在 AndroidManifest.xml 中的应用程序标记下添加提供程序
<application>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="your package name.provider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
第2步:在PDF查看器中从Assets文件夹中打开文件
private void OpenPdfInExternalApplication(string filename)
{
AssetManager assetManager = Activity.Assets;
string fileName1 = filename + ".pdf";
var file = new File(Activity.FilesDir, fileName1);
Uri uri = null;
Intent intent = new Intent(Intent.ActionView);
try
{
// Get the input stream
Stream input = assetManager.Open(fileName1);
Stream output;
if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
{
output = Activity.OpenFileOutput(file.Name, FileCreationMode.Private);
uri = FileProvider.GetUriForFile(Activity, Activity.PackageName + ".provider", file);
intent.SetDataAndType(uri, "application/pdf");
}
else
{
output = Activity.OpenFileOutput(file.Name, FileCreationMode.WorldReadable);
intent.SetDataAndType(Uri.Parse("file://" + Activity.FilesDir + "/" + fileName),
"application/pdf");
}
input.CopyTo(output);
intent.AddFlags(ActivityFlags.GrantPrefixUriPermission);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
try
{
StartActivity(intent);
}
catch (ActivityNotFoundException ex)
{
Toast.MakeText(Activity, ex.Message, ToastLength.Long).Show();
}
}