(Delphi 10.2)如何在Android';从我的应用程序中删除web浏览器?

(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

Delphi 10.2.2 Firemonkey Android问题:如何从应用程序在Android的web浏览器中打开URL

我试图理解这里的概念:但这些信息对我没有任何帮助。与我目前拥有的代码相比,我无法思考他们如何让它工作

我也看过这里:

我也看过这里:

我尝试过以下代码:

我就是这样使用这个函数的:

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