(Delphi 10.2)如何在Android';从我的应用程序中删除web浏览器?
Delphi 10.2.2 Firemonkey Android问题:如何从应用程序在Android的web浏览器中打开URL 我试图理解这里的概念:但这些信息对我没有任何帮助。与我目前拥有的代码相比,我无法思考他们如何让它工作 我也看过这里: 我也看过这里: 我尝试过以下代码: 我就是这样使用这个函数的:(Delphi 10.2)如何在Android';从我的应用程序中删除web浏览器?,android,delphi,url,browser,Android,Delphi,Url,Browser,Delphi 10.2.2 Firemonkey Android问题:如何从应用程序在Android的web浏览器中打开URL 我试图理解这里的概念:但这些信息对我没有任何帮助。与我目前拥有的代码相比,我无法思考他们如何让它工作 我也看过这里: 我也看过这里: 我尝试过以下代码: 我就是这样使用这个函数的: OpenURL('https://www.patreon.com/phonelosers/overview/', true) 它总是给我一个错误: 错误:android.content.A
OpenURL('https://www.patreon.com/phonelosers/overview/', true)
它总是给我一个错误:
错误:android.content.ActivityNotFoundException:未找到处理Intent的活动{act=android.Intent.action.VIEW dat=}
我也试过这个代码:
函数OpenURL(consturl:string;constdisplayError:Boolean=False):Boolean;
变量
意向:金腾;
开始
//geo:prefix和URLEncode可能有问题。
//需要进行研究
Intent:=TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_视图,
TJnet_Uri.JavaClass.parse(StringToJString(System.NetEncoding.TNetEncoding.URL.Encode(URL));
如果TAndroidHelper.Activity.getPackageManager.QueryInputActivities(Intent,TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY)。大小>0,则
开始
尝试
TAndroidHelper.活动.开始触觉(意图);
退出(真);
除了
关于e:Exception-do
开始
如果显示错误,则显示消息('Error:'+e.Message);
退出(假);
结束;
结束;
结束
其他的
开始
使用不同的编码方法后显示消息('Intent.resolveActivity:
procedure OpenURL(const URL: string);
var
LIntent: JIntent;
Data: Jnet_Uri;
begin
LIntent := TJIntent.Create;
Data := TJnet_Uri.JavaClass.parse(StringToJString(URL));
LIntent.setData(Data);
LIntent.setAction(StringToJString('android.intent.action.VIEW'));
TAndroidHelper.Activity.startActivity(LIntent);
end;
我发现我忘记了“System.NetEncoding.TNetEncoding.URL.Encode”,只是从源代码中删除了该代码就解决了这个问题,因此该代码:
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
var
Intent: JIntent;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(URL)));
try
TAndroidHelper.Activity.startActivity(Intent);
exit(true);
except
on e: Exception do
begin
if DisplayError then ShowMessage('Error: ' + e.Message);
exit(false);
end;
end;
end;
现在开始工作了
由于System.NetEncoding.TNetEncoding.URL.Encode导致了此问题,我想知道是否需要对我的URL进行特殊编码,我应该使用什么?使用此代码:
var
URL: string;
Intent: JIntent;
begin
URL := 'https://www.google.com';
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(URL)));
SharedActivity.startActivity(Intent);
end
function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
var
Intent: JIntent;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(URL)));
try
TAndroidHelper.Activity.startActivity(Intent);
exit(true);
except
on e: Exception do
begin
if DisplayError then ShowMessage('Error: ' + e.Message);
exit(false);
end;
end;
end;
var
URL: string;
Intent: JIntent;
begin
URL := 'https://www.google.com';
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(URL)));
SharedActivity.startActivity(Intent);
end