mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-20 07:42:52 +02:00
LCL-CustomDrawn-Android: Advances OpenDocument. Now it shows the list, but the apps crash at startup misteriously
git-svn-id: trunk@37228 -
This commit is contained in:
parent
d1036bd684
commit
d6044d86ae
@ -197,7 +197,8 @@ type
|
|||||||
function AndroidKeyCodeToLCLKeyCode(AAndroidKeyCode: Integer): Word;
|
function AndroidKeyCodeToLCLKeyCode(AAndroidKeyCode: Integer): Word;
|
||||||
function DoOpenURLWidgetsetImplementation(AURL: string): Boolean;
|
function DoOpenURLWidgetsetImplementation(AURL: string): Boolean;
|
||||||
function DoOpenDocumentWidgetsetImplementation(APath: string): Boolean;
|
function DoOpenDocumentWidgetsetImplementation(APath: string): Boolean;
|
||||||
function DoOpenAndroidURI(AURI: JObject): Boolean;
|
function DoOpenAndroidURI(AURI: JObject; AMimeType: string): Boolean;
|
||||||
|
function GetMimeTypeFromFileName(AFileName: string): string;
|
||||||
{$endif}
|
{$endif}
|
||||||
{$ifdef CD_Cocoa}
|
{$ifdef CD_Cocoa}
|
||||||
pool : NSAutoreleasePool;
|
pool : NSAutoreleasePool;
|
||||||
|
@ -875,15 +875,15 @@ begin
|
|||||||
DebugLn(Format('[DoOpenDocumentWidgetsetImplementation] APath=%s', [APath]));
|
DebugLn(Format('[DoOpenDocumentWidgetsetImplementation] APath=%s', [APath]));
|
||||||
lJavaString := javaEnvRef^^.NewStringUTF(javaEnvRef, 'file');
|
lJavaString := javaEnvRef^^.NewStringUTF(javaEnvRef, 'file');
|
||||||
lParams[0].l := lJavaString;
|
lParams[0].l := lJavaString;
|
||||||
lJavaString2 := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(APath));
|
lJavaString2 := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar('//' + APath));
|
||||||
lParams[1].l := lJavaString2;
|
lParams[1].l := lJavaString2;
|
||||||
lParams[2].l := nil;
|
lParams[2].l := nil;
|
||||||
lJavaURIObject := javaEnvRef^^.CallStaticObjectMethodA(javaEnvRef, javaAndroidNetUriClass, javaMethod_Uri_fromParts, @lParams[0]);
|
lJavaURIObject := javaEnvRef^^.CallStaticObjectMethodA(javaEnvRef, javaAndroidNetUriClass, javaMethod_Uri_fromParts, @lParams[0]);
|
||||||
|
|
||||||
Result := DoOpenAndroidURI(lJavaURIObject);
|
Result := DoOpenAndroidURI(lJavaURIObject, GetMimeTypeFromFileName(APath));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCDWidgetSet.DoOpenAndroidURI(AURI: JObject): Boolean;
|
function TCDWidgetSet.DoOpenAndroidURI(AURI: JObject; AMimeType: string): Boolean;
|
||||||
var
|
var
|
||||||
// Java IDs
|
// Java IDs
|
||||||
javaAndroidContentContextClass: JClass;
|
javaAndroidContentContextClass: JClass;
|
||||||
@ -892,7 +892,7 @@ var
|
|||||||
javaAndroidAppActivityClass: JClass;
|
javaAndroidAppActivityClass: JClass;
|
||||||
javaMethod_Intent_new: jmethodid = nil;
|
javaMethod_Intent_new: jmethodid = nil;
|
||||||
javaMethod_Intent_setDataAndType: jmethodid = nil;
|
javaMethod_Intent_setDataAndType: jmethodid = nil;
|
||||||
// javaMethod_Context_getPackageManager: jmethodid = nil;
|
javaMethod_Context_getPackageManager: jmethodid = nil;
|
||||||
// javaMethod_PmPackageManager_queryIntentActivities: jmethodid = nil;
|
// javaMethod_PmPackageManager_queryIntentActivities: jmethodid = nil;
|
||||||
javaMethod_Activity_startActivity: jmethodid = nil;
|
javaMethod_Activity_startActivity: jmethodid = nil;
|
||||||
// Java Object instances
|
// Java Object instances
|
||||||
@ -908,7 +908,7 @@ begin
|
|||||||
if (javaEnvRef = nil) then Exit;
|
if (javaEnvRef = nil) then Exit;
|
||||||
|
|
||||||
// First IDs
|
// First IDs
|
||||||
DebugLn(Format('[DoOpenAndroidURI] AURI=%x', [PtrInt(AURI)]));
|
DebugLn(Format(':>[DoOpenAndroidURI] AURI=%x', [PtrInt(AURI)]));
|
||||||
javaAndroidContentContextClass := javaEnvRef^^.FindClass(javaEnvRef,'android/content/Context');
|
javaAndroidContentContextClass := javaEnvRef^^.FindClass(javaEnvRef,'android/content/Context');
|
||||||
javaAndroidContentIntentClass := javaEnvRef^^.FindClass(javaEnvRef,'android/content/Intent');
|
javaAndroidContentIntentClass := javaEnvRef^^.FindClass(javaEnvRef,'android/content/Intent');
|
||||||
javaAndroidContentPmPackageManagerClass := javaEnvRef^^.FindClass(javaEnvRef,'android/content/pm/PackageManager');
|
javaAndroidContentPmPackageManagerClass := javaEnvRef^^.FindClass(javaEnvRef,'android/content/pm/PackageManager');
|
||||||
@ -920,15 +920,13 @@ begin
|
|||||||
javaMethod_Activity_startActivity := javaEnvRef^^.GetMethodID(javaEnvRef, javaAndroidAppActivityClass, 'startActivity', '(Landroid/content/Intent;)V');
|
javaMethod_Activity_startActivity := javaEnvRef^^.GetMethodID(javaEnvRef, javaAndroidAppActivityClass, 'startActivity', '(Landroid/content/Intent;)V');
|
||||||
|
|
||||||
// Intent viewDoc = new Intent(Intent.ACTION_VIEW);
|
// Intent viewDoc = new Intent(Intent.ACTION_VIEW);
|
||||||
DebugLn('BB');
|
|
||||||
lJavaString := javaEnvRef^^.NewStringUTF(javaEnvRef, javaConstant_Intent_ACTION_VIEW);
|
lJavaString := javaEnvRef^^.NewStringUTF(javaEnvRef, javaConstant_Intent_ACTION_VIEW);
|
||||||
lParams[0].l := lJavaString;
|
lParams[0].l := lJavaString;
|
||||||
javaViewDocObject := javaEnvRef^^.NewObjectA(javaEnvRef, javaAndroidContentIntentClass, javaMethod_Intent_new, @lParams[0]);
|
javaViewDocObject := javaEnvRef^^.NewObjectA(javaEnvRef, javaAndroidContentIntentClass, javaMethod_Intent_new, @lParams[0]);
|
||||||
|
|
||||||
// viewDoc.setDataAndType(uri, "application/pdf");
|
// viewDoc.setDataAndType(uri, "application/pdf");
|
||||||
DebugLn('CC');
|
|
||||||
lParams[0].l := AURI;
|
lParams[0].l := AURI;
|
||||||
lJavaString := javaEnvRef^^.NewStringUTF(javaEnvRef, 'text/plain');
|
lJavaString := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(AMimeType));
|
||||||
lParams[1].l := lJavaString;
|
lParams[1].l := lJavaString;
|
||||||
javaEnvRef^^.CallObjectMethodA(javaEnvRef, javaViewDocObject, javaMethod_Intent_setDataAndType, @lParams[0]);
|
javaEnvRef^^.CallObjectMethodA(javaEnvRef, javaViewDocObject, javaMethod_Intent_setDataAndType, @lParams[0]);
|
||||||
|
|
||||||
@ -937,9 +935,24 @@ begin
|
|||||||
|
|
||||||
// List<ResolveInfo> apps = pm.queryIntentActivities(viewDoc, PackageManager.MATCH_DEFAULT_ONLY);
|
// List<ResolveInfo> apps = pm.queryIntentActivities(viewDoc, PackageManager.MATCH_DEFAULT_ONLY);
|
||||||
|
|
||||||
// if (apps.size() > 0) this.startActivity(viewDoc);
|
// int lSize = apps.size()
|
||||||
lParams[0].l := AURI;
|
|
||||||
|
// if (lSize > 0) this.startActivity(viewDoc);
|
||||||
|
lParams[0].l := javaViewDocObject;
|
||||||
javaEnvRef^^.CallVoidMethodA(javaEnvRef, javaActivityObject, javaMethod_Activity_startActivity, @lParams[0]);
|
javaEnvRef^^.CallVoidMethodA(javaEnvRef, javaActivityObject, javaMethod_Activity_startActivity, @lParams[0]);
|
||||||
|
|
||||||
|
Result := True;
|
||||||
|
DebugLn(':<[DoOpenAndroidURI]');
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCDWidgetSet.GetMimeTypeFromFileName(AFileName: string): string;
|
||||||
|
var
|
||||||
|
lExt: String;
|
||||||
|
begin
|
||||||
|
lExt := SysUtils.ExtractFileExt(AFileName);
|
||||||
|
if lExt = '.png' then Result := 'image/png'
|
||||||
|
else if lExt = '.txt' then Result := 'text/plain'
|
||||||
|
else if lExt = '.jpg' then Result := 'image/jpeg';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCDWidgetSet.GetAppHandle: THandle;
|
function TCDWidgetSet.GetAppHandle: THandle;
|
||||||
|
@ -3984,7 +3984,7 @@ end;
|
|||||||
Returns: True on success
|
Returns: True on success
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
function TCDWidgetSet.GetTextExtentExPoint(DC: HDC; Str: PChar; Count,
|
function TCDWidgetSet.GetTextExtentExPoint(DC: HDC; Str: PChar; Count,
|
||||||
MaxWidth: Integer; MaxCount, PartialWidths: PInteger; var Size: TSize
|
MaxWidth: Integer; MaxCount, PartialWidths: PInteger; var Size: Types.TSize
|
||||||
): Boolean;
|
): Boolean;
|
||||||
var
|
var
|
||||||
LazDC: TLazCanvas absolute DC;
|
LazDC: TLazCanvas absolute DC;
|
||||||
@ -4063,7 +4063,8 @@ end;
|
|||||||
Params: none
|
Params: none
|
||||||
Returns: Nothing
|
Returns: Nothing
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
function TCDWidgetSet.GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean;
|
function TCDWidgetSet.GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer;
|
||||||
|
var Size: Types.TSize): Boolean;
|
||||||
var
|
var
|
||||||
lJavaString: jstring;
|
lJavaString: jstring;
|
||||||
LazDC: TLazCanvas;
|
LazDC: TLazCanvas;
|
||||||
|
Loading…
Reference in New Issue
Block a user