Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何阅读意图的文本_Delphi_Android Intent_Delphi 10.2 Tokyo - Fatal编程技术网

Delphi 如何阅读意图的文本

Delphi 如何阅读意图的文本,delphi,android-intent,delphi-10.2-tokyo,Delphi,Android Intent,Delphi 10.2 Tokyo,我正在尝试读取共享谷歌地图中的位置时生成的文本。其格式如下: 纽约帝国州立大厦,邮编:10001。http://url 我的想法是在我的应用程序内部打开URL,从那个地方获取数据 我已经阅读了使用此代码的意图,没有问题: function HandleIntentAction(const Data: JIntent): Boolean; var Extras: JBundle; valor,valorofuscated,id,typetoopen,valortext:string; be

我正在尝试读取共享谷歌地图中的位置时生成的文本。其格式如下:

纽约帝国州立大厦,邮编:10001。http://url

我的想法是在我的应用程序内部打开URL,从那个地方获取数据

我已经阅读了使用此代码的意图,没有问题:

function HandleIntentAction(const Data: JIntent): Boolean;
var
  Extras: JBundle;
  valor,valorofuscated,id,typetoopen,valortext:string;
begin
  Result := False;
  if Data <> nil then
  begin
    Extras := Data.getExtras;
    if Extras <> nil then
    begin
      valorofuscated:=
        JStringToString(Data.getStringExtra(StringToJString('EXTRA_TEXT')));  
      valor:= Crypt('Decrypt',valorofuscated);
    end;
  end;
  Invalidate;
end;
函数HandleIntentAction(常量数据:JIntent):布尔值;
变量
附加:JBundle;
valor,valorofuscated,id,typetoopen,valortext:string;
开始
结果:=假;
如果数据为零,则
开始
Extras:=Data.getExtras;
如果没有,那么
开始
valorofuscated:=
JStringToString(Data.getStringExtra(StringToJString('EXTRA_TEXT'));
valor:=Crypt('Decrypt',valorofuscated);
结束;
结束;
使无效
结束;

但是,当我从Maps接收到意图时,
Extras
总是为零。有什么想法吗?

我不知道为什么
Extras
nil
,但是你不需要调用
getExtras()
,因为你没有使用返回的
包。只需无条件调用
getStringExtra()
,如果请求的项不存在,它将返回
nil
。另外,您应该使用
TJIntent.JavaClass.EXTRA_TEXT
而不是
StringToJString('EXTRA_TEXT')
(特别是因为
'EXTRA_TEXT'
是错误的字符串值,正确的值是
'android.intent.EXTRA.TEXT'
)。我没有使用
jstringtojstring(Data.getstring额外)(TJIntent.JavaClass.EXTRA_TEXT));
:(我没想到你会这么做。如果
EXTRA
nil
,那么
getStringExtra()
显然也会返回
nil
。我只是指出了代码中的一个错误,您现在已经修复了。因此,现在,您需要弄清楚为什么在共享位置时,“地图”不使用数据填充
extra
。意图实际包含哪些数据?意图的作用是什么?它有哪些类别?Flags?ComponentName?ContentType?你确定你正在处理你所期望的正确意图吗?谢谢你,Remy。问题是我对意图非常迷茫,我不知道从哪里可以找到你所问所有问题的信息。恐怕我没有答案。我所知道的是,如果我与cli共享这个位置pboard,我看到一个带有地点名称的文本和一个指向Android的google mapsStart的url。剪贴板应用程序选择从
Intent
中提取并转换为文本格式以便复制/粘贴的内容可能不是
Intent
本身的实际格式。