<!-- **** ADD THIS SECTION **** -->
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.AatchiyarIAS.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/>
</provider>
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
Delphi代码:
function TFrameFileDetail.GetMimeType(Uri: Jnet_Uri): JString;
var
MimeType: JString;
ContentResolver: JContentResolver;
FileExtension: JString;
begin
// https://stackoverflow.com/a/31691791/2899073
MimeType := nil;
if (Uri.getScheme.equals(TJContentResolver.JavaClass.SCHEME_CONTENT)) then
begin
ContentResolver := TAndroidHelper.Context.getContentResolver();
MimeType := ContentResolver.getType(uri);
end
else
begin
FileExtension := TJMimeTypeMap.JavaClass.getFileExtensionFromUrl(uri.toString());
MimeType := TJMimeTypeMap.JavaClass.getSingleton().getMimeTypeFromExtension(
fileExtension.toLowerCase()
);
end;
Result := MimeType;
end;
procedure TFrameFileDetail.OpenPDF(InpStrPDFPath: string);
var
Data: Jnet_Uri;
Intent: JIntent;
javafile: JFile;
&OriginalFile, PublicDirectoryFile, PublicFile: JFile;
PublicDirectoryPath, PublicPath: string;
Uri: Jnet_Uri;
begin
PublicFile := TJFile.JavaClass.init(StringToJString(InpStrPDFPath));
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
Uri := TJnet_Uri.JavaClass.fromFile(PublicFile);
Intent.setDataAndType(Uri, self.GetMimeType(Uri));
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY);
TAndroidHelper.Activity.startActivity(Intent);
end;
请帮助我解决这个问题。
你需要这个单位:
https://github.com/delphiworlds/kastrifree/blob/master/api/dw.androidapi.jni.fileprovider.pas
对于此代码:
uses
Androidapi.JNI.JavaTypes, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers;
procedure OpenPDF(const AFileName: string);
var
LIntent: JIntent;
LAuthority: JString;
LUri: Jnet_Uri;
begin
LAuthority := StringToJString(JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName) + '.fileprovider');
LUri := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context, LAuthority, TJFile.JavaClass.init(StringToJString(AFileName)));
LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
LIntent.setDataAndType(LUri, StringToJString('application/pdf'));
LIntent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
TAndroidHelper.Activity.startActivity(LIntent);
end;
我使用Delphi 10.1开发android应用程序,我使用Delphi示例实现Android26 API,当我使用通知时,它不显示。我还尝试了通知示例。但它不起作用。请帮助我实现通知,因为我需要从Android服务实现这一点。
尝试在中显示文件时遇到问题。异常如下所示:。 代码如下: 异常消息为: 线程“main”com.JNIWrapper.libraryNotFoundException:在java.library.path中找不到JNIWrapper本机库(jniwrap.dll):c:\program files\java\jdk1.7.0_05\bin;c:\windows\sun\java\bin;c:\wi
问题内容: 如何为应用添加 PDF文件 ,您可以单击一个按钮查看该文件,完成后又回到原来的屏幕? 问题答案: 如果您只想查看PDF文件,则可以将其加载到UIWebView中。 斯威夫特4.1: 如果您想实现更多目标,最好使用PSPDFKit框架。
当尝试使用将文件转换为文件时,会出现以下异常: RuntimeException:Scanline必须以EOL代码字开头。在com.itextpdf.text.pdf.codec.tifffaxdecoder.readeol(tifffaxdecoder.java:1303),在com.itextpdf.text.pdf.codec.tifffaxdecoder.decode2d(tifffaxd
在Delphi 10.0 Seattle中,我在向FireMonkey添加值时遇到问题。 将变量强制转换为指针时会引发exeception。 下面是我的代码:
本文向大家介绍Embarcadero Delphi 使用FireMonkey跨平台的Hello World,包括了Embarcadero Delphi 使用FireMonkey跨平台的Hello World的使用技巧和注意事项,需要的朋友参考一下 示例 XE2 大多数Delphi支持的平台(Win32 / Win64 / OSX32 / Android32 / iOS32 / iOS64)也支持控