编辑以细化问题
在Android中,我需要下载一个pdf文件到“Documents”文件夹,并使用默认程序打开它。我下载了文档并将其存储在Byte数组中。然后我调用这个方法:
/// <summary>
/// Save data bytes on "My documents" folder and open
/// </summary>
/// <param name="fileName">Filename, for example: "Test.pdf"</param>
/// <param name="data">Array of bytes to save</param>
/// <returns>True if success or false if error</returns>
public bool SaveAndOpen(string fileName, byte[] data)
{
try
{
// Get my documents path
string filePath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, Android.OS.Environment.DirectoryDownloads);
// Combine with filename
string fullName = Path.Combine(filePath, fileName);
// If the file exist on device delete it
if (File.Exists(fullName))
{
// Note: In the second run of this method, the file exists
File.Delete(fullName);
}
// Write bytes on "My documents"
File.WriteAllBytes(fullName, data);
// Launch file as process
Process.Start(fullName);
return true;
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message + ex.StackTrace);
return false;
}
}
问题是用默认的pdf阅读器打开pdf文档。
行“Process.Start(fullName);“引发异常
系统异常(0x 80004005):拒绝访问
谢谢你的时间!
2条答案
按热度按时间cigdeys31#
我找到了保存和打开文件的方法:
在运行时需要请求权限。我使用了Plugin。Nuget上提供的权限:
另外,在AndroidManifest.xml文件中添加一个提供程序:
在同一个AndroidManifest中添加以下权限:
然后在Resources/xml/file_paths.xml中添加外部路径
不知道如果我没有需要的权限,但与这种方式的作品。
xxe27gdn2#
我将扩展@duefectu答案与类阅读文件更多的扩展其中MainActivity.MainActivityInstance存储MainActivityContext