Delphi 如何阅读意图的文本
我正在尝试读取共享谷歌地图中的位置时生成的文本。其格式如下: 纽约帝国州立大厦,邮编:10001。http://url 我的想法是在我的应用程序内部打开URL,从那个地方获取数据 我已经阅读了使用此代码的意图,没有问题: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
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
本身的实际格式。