{"id":661,"date":"2024-05-27T10:28:31","date_gmt":"2024-05-27T13:28:31","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?p=661"},"modified":"2024-05-27T10:28:32","modified_gmt":"2024-05-27T13:28:32","slug":"criando-aplicativos-com-integracao-ao-intents-no-android-com-delphi","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/criando-aplicativos-com-integracao-ao-intents-no-android-com-delphi\/","title":{"rendered":"Criando aplicativos com integra\u00e7\u00e3o ao Intents no Android com Delphi"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><\/h4>\n\n\n\n<p>No Android, <strong>Intents<\/strong> s\u00e3o uma forma de comunica\u00e7\u00e3o entre diferentes componentes do sistema e entre aplicativos. Elas permitem que uma aplica\u00e7\u00e3o solicite uma a\u00e7\u00e3o de outra aplica\u00e7\u00e3o, como abrir uma p\u00e1gina web, enviar um e-mail ou iniciar uma nova atividade dentro do mesmo aplicativo. Intents podem ser expl\u00edcitas, quando o componente alvo \u00e9 especificado, ou impl\u00edcitas, quando o sistema decide qual componente deve responder baseado nas informa\u00e7\u00f5es fornecidas na Intent.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-large-font-size\"><strong>Facilidade de uso<\/strong><\/p>\n\n\n\n<p><strong>Intents<\/strong> facilitam a comunica\u00e7\u00e3o entre diferentes componentes de um aplicativo ou entre aplicativos distintos. Isso \u00e9 crucial para o funcionamento de aplicativos modernos, onde a integra\u00e7\u00e3o entre diferentes servi\u00e7os e funcionalidades \u00e9 necess\u00e1ria para oferecer uma experi\u00eancia de usu\u00e1rio rica e coesa. <\/p>\n\n\n\n<p><strong>Conceito:<\/strong> Intents permitem que componentes como atividades, servi\u00e7os e broadcast receivers se comuniquem entre si. Quando um componente quer iniciar outro componente, ele pode criar uma Intent descrevendo a a\u00e7\u00e3o desejada (por exemplo, visualizar uma foto, enviar uma mensagem, etc.) e envi\u00e1-la ao sistema Android, que determina o componente adequado para lidar com a Intent.<\/p>\n\n\n\n<p>No mundo da automa\u00e7\u00e3o comercial por exemplo, voc\u00ea j\u00e1 deve ter notado que podemos e at\u00e9 somos obrigados a chamar outros aplicativos para realizar tarefas pra n\u00f3s, por exemplo aplicativos que precisam receber valores por d\u00e9bito e cr\u00e9dito. Normalmente uma maquinha de cart\u00e3o com Android, os famosos POS, vem instalados aplicativos das empresas que far\u00e3o o recebimento do pagamento. Esses apps recebem as requisi\u00e7\u00f5es atrav\u00e9s de Intents, recebem o pagamento e devolvem a instru\u00e7\u00e3o para o aplicativo chamador. Isso \u00e9 s\u00f3 pra voc\u00ea ter uma ideia de como funciona.<\/p>\n\n\n\n<p>Exemplo pr\u00e1tico:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.Helpers, \n  Androidapi.JNI.GraphicsContentViewText;\n\nprocedure ShareText(const Text: string);\nvar\n  Intent: JIntent;\nbegin\n  Intent := TJIntent.Create;\n  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);\n  Intent.setType(StringToJString('text\/plain'));\n  Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(Text));\n  TAndroidHelper.Activity.startActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Compartilhar via')));\nend;\n\n\/\/ Exemplo de uso\nShareText('Ol\u00e1, este \u00e9 um texto para compartilhar!');\n<\/pre><\/div>\n\n\n\n<p>No c\u00f3digo acima, estamos criando um m\u00e9todo chamado ShareTExt que far\u00e1 o trabalho de enviar um texto para o sistema operacional Android. Nesse caso em especial, o Android carregar\u00e1 uma popup na parte inferior onde o usu\u00e1ro dever\u00e1 escolher para qual o aplicativo esse texto ser\u00e1 enviado.<\/p>\n\n\n\n<p>Al\u00e9m disso, podemos tanto usar Intents para enviar algo a outro aplicativo quando receber esses &#8220;comandos&#8221; em nosso app para realizar alguma tarefa. Veremos ambas op\u00e7\u00f5es.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Reuso de componentes<\/strong><\/h4>\n\n\n\n<p>Usar Intents permite que aplicativos reutilizem funcionalidades de outros aplicativos, economizando tempo e esfor\u00e7o no desenvolvimento de funcionalidades que j\u00e1 existem e s\u00e3o bem implementadas por outros.<\/p>\n\n\n\n<p><strong>Exemplo Pr\u00e1tico: Capturar Foto<\/strong><\/p>\n\n\n\n<p>Ao inv\u00e9s de implementar uma c\u00e2mera completa dentro do seu aplicativo, voc\u00ea pode usar uma Intent para solicitar que o aplicativo de c\u00e2mera nativo do dispositivo capture uma foto e retorne a imagem capturada.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.Helpers, \n  Androidapi.JNI.GraphicsContentViewText, \n  FMX.Helpers.Android;\n\nconst\n  REQUEST_IMAGE_CAPTURE = 1;\n\nprocedure CapturePhoto;\nvar\n  Intent: JIntent;\nbegin\n  Intent := TJIntent.JavaClass.init(TJMediaStore.JavaClass.ACTION_IMAGE_CAPTURE);\n  if Intent.resolveActivity(TAndroidHelper.Context.getPackageManager) &lt;&gt; nil then\n  begin\n    TAndroidHelper.Activity.startActivityForResult(Intent, REQUEST_IMAGE_CAPTURE);\n  end;\nend;\n\nprocedure TForm1.onActivityResult(RequestCode: Integer; ResultCode: Integer; Data: JIntent);\nbegin\n  if (RequestCode = REQUEST_IMAGE_CAPTURE) and (ResultCode = TJActivity.JavaClass.RESULT_OK) then\n  begin\n    \/\/ Tratar a foto capturada (data.getExtras.get('data') cont\u00e9m a imagem)\n  end;\nend;\n\n\/\/ Exemplo de uso\nCapturePhoto;\n<\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/adrianosantos.link\/treinamentos\" target=\"_blank\" rel=\"noreferrer noopener\"><img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"150\" src=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1.png\" alt=\"\" class=\"wp-image-222\" srcset=\"https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1.png 800w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1-300x56.png 300w, https:\/\/adrianosantostreina.com.br\/blog\/wp-content\/uploads\/2024\/02\/Banner-Hotmart-1-768x144.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Modularidade<\/strong><\/h4>\n\n\n\n<p>Intents promovem um design modular, onde diferentes partes do aplicativo podem ser desenvolvidas e testadas separadamente. Isso leva a um c\u00f3digo mais limpo e f\u00e1cil de manter.<\/p>\n\n\n\n<p><strong>Conceito:<\/strong> Ao usar Intents para separar funcionalidades em diferentes atividades ou servi\u00e7os, voc\u00ea garante que cada componente do seu aplicativo tenha uma \u00fanica responsabilidade. Isso facilita a depura\u00e7\u00e3o, o teste e a manuten\u00e7\u00e3o do aplicativo a longo prazo.<\/p>\n\n\n\n<p><strong>Exemplo Pr\u00e1tico: Iniciar uma nova atividade<\/strong><\/p>\n\n\n\n<p>Voc\u00ea pode usar uma Intent expl\u00edcita para iniciar uma nova atividade dentro do seu aplicativo, promovendo a modularidade do c\u00f3digo.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.Helpers, \n  Androidapi.JNI.GraphicsContentViewText;\n\nprocedure StartNewActivity;\nvar\n  Intent: JIntent;\nbegin\n  Intent := TJIntent.JavaClass.init(TAndroidHelper.Context, TNewActivity.JavaClass);\n  TAndroidHelper.Activity.startActivity(Intent);\nend;\n\n\/\/ Exemplo de uso\nStartNewActivity;\n<\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Flexibilidade<\/strong><\/h4>\n\n\n\n<p>Intents permitem que aplicativos realizem uma ampla gama de a\u00e7\u00f5es, desde abrir p\u00e1ginas web at\u00e9 enviar emails e mensagens SMS. Isso oferece uma grande flexibilidade no design de funcionalidades do aplicativo.<\/p>\n\n\n\n<p><strong>Conceito:<\/strong> A flexibilidade das Intents permite que voc\u00ea adicione novas funcionalidades ao seu aplicativo com pouco esfor\u00e7o, aproveitando ao m\u00e1ximo as capacidades do dispositivo e do ecossistema Android.<\/p>\n\n\n\n<p><strong>Exemplo Pr\u00e1tico: Enviar um Email<\/strong><\/p>\n\n\n\n<p>Voc\u00ea pode usar uma Intent para permitir que o usu\u00e1rio envie um email usando qualquer aplicativo de email instalado no dispositivo.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.Helpers, \n  Androidapi.JNI.GraphicsContentViewText;\n\nprocedure SendEmail(const Recipient, Subject, Body: string);\nvar\n  Intent: JIntent;\nbegin\n  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND);\n  Intent.setType(StringToJString('message\/rfc822'));\n  Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, StringToJStringArray([Recipient]));\n  Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(Subject));\n  Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(Body));\n  TAndroidHelper.Activity.startActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Enviar Email via')));\nend;\n\n\/\/ Exemplo de uso\nSendEmail('exemplo@dominio.com', 'Assunto do Email', 'Corpo do email.');\n<\/pre><\/div>\n\n\n\n<p>Obs. Os exemplos de c\u00f3digo acima podem variar um pouco em cada vers\u00e3o do Delphi e\/ou Android, mas as varia\u00e7\u00f5es s\u00e3o mais raras, o Google tem isso muito bem desenvolvido no Android.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u00c9 poss\u00edvel criar um app que receba Intents?<\/h4>\n\n\n\n<p>Sim, \u00e9 totalmente poss\u00edvel criar um aplicativo em Delphi que receba Intents. Para isso, \u00e9 necess\u00e1rio declarar no arquivo de manifesto do aplicativo quais Intents ele est\u00e1 preparado para receber e implementar o tratamento dessas Intents no c\u00f3digo do aplicativo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Quais s\u00e3o os tipos de Intents que podemos integrar?<\/h4>\n\n\n\n<p>Podemos integrar diversos tipos de Intents, incluindo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Intents Impl\u00edcitas:<\/strong> Para a\u00e7\u00f5es como compartilhar texto, abrir URLs, enviar emails, etc.<\/li>\n\n\n\n<li><strong>Intents Expl\u00edcitas:<\/strong> Para iniciar atividades ou servi\u00e7os espec\u00edficos dentro do mesmo aplicativo.<\/li>\n\n\n\n<li><strong>Broadcast Intents:<\/strong> Para receber notifica\u00e7\u00f5es do sistema ou de outros aplicativos, como altera\u00e7\u00f5es na conectividade de rede ou na bateria.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tipos de Intents no Android<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1. Intents Impl\u00edcitas<\/h4>\n\n\n\n<p><strong>Intents Impl\u00edcitas<\/strong> s\u00e3o usadas quando voc\u00ea deseja realizar uma a\u00e7\u00e3o sem especificar o componente exato que deve execut\u00e1-la. Em vez disso, voc\u00ea fornece informa\u00e7\u00f5es suficientes para que o sistema Android encontre o componente apropriado. Isso \u00e9 \u00fatil quando voc\u00ea quer que o sistema escolha o melhor aplicativo para a tarefa, como abrir uma p\u00e1gina web ou compartilhar texto.<\/p>\n\n\n\n<p><strong>Caracter\u00edsticas:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>N\u00e3o especifica diretamente o componente que deve tratar a Intent.<\/li>\n\n\n\n<li>Usa a\u00e7\u00f5es gen\u00e9ricas como <code>ACTION_VIEW<\/code>, <code>ACTION_SEND<\/code>, etc.<\/li>\n\n\n\n<li>Permite que o usu\u00e1rio escolha entre v\u00e1rias op\u00e7\u00f5es se houver mais de um aplicativo que possa realizar a a\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p><strong>Exemplo Pr\u00e1tico: Abrir uma P\u00e1gina Web<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.JNI.GraphicsContentViewText, \n  Androidapi.Helpers, \n  FMX.Helpers.Android;\n\nprocedure OpenWebPage(const URL: string);\nvar\n  Intent: JIntent;\nbegin\n  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, TJnet_Uri.JavaClass.parse(StringToJString(URL)));\n  TAndroidHelper.Activity.startActivity(Intent);\nend;\n\n\/\/ Exemplo de uso\nOpenWebPage('https:\/\/www.example.com');\n<\/pre><\/div>\n\n\n\n<p>Neste exemplo, a Intent n\u00e3o especifica qual navegador deve ser usado para abrir a URL. O sistema apresentar\u00e1 uma lista de navegadores dispon\u00edveis e deixar\u00e1 o usu\u00e1rio escolher.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. Intents Expl\u00edcitas<\/h4>\n\n\n\n<p><strong>Intents Expl\u00edcitas<\/strong> s\u00e3o usadas quando voc\u00ea sabe exatamente qual componente deve tratar a Intent. Isso \u00e9 comum quando voc\u00ea est\u00e1 comunicando entre diferentes atividades dentro do mesmo aplicativo. Aqui, voc\u00ea especifica diretamente a classe do componente que deve responder \u00e0 Intent.<\/p>\n\n\n\n<p><strong>Caracter\u00edsticas:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Especifica diretamente o componente alvo.<\/li>\n\n\n\n<li>Usada principalmente para comunica\u00e7\u00e3o dentro do mesmo aplicativo.<\/li>\n\n\n\n<li>Garante que a a\u00e7\u00e3o seja tratada pelo componente especificado.<\/li>\n<\/ul>\n\n\n\n<p><strong>Exemplo Pr\u00e1tico: Iniciar uma Nova Atividade<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.Helpers, \n  Androidapi.JNI.GraphicsContentViewText;\n\nprocedure StartNewActivity;\nvar\n  Intent: JIntent;\nbegin\n  Intent := TJIntent.JavaClass.init(TAndroidHelper.Context, TNewActivity.JavaClass);\n  TAndroidHelper.Activity.startActivity(Intent);\nend;\n\n\/\/ Exemplo de uso\nStartNewActivity;\n<\/pre><\/div>\n\n\n\n<p>Neste exemplo, a Intent especifica que a <code>TNewActivity<\/code> deve ser iniciada, garantindo que a a\u00e7\u00e3o ser\u00e1 tratada pela atividade especificada.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. Broadcast Intents<\/h4>\n\n\n\n<p><strong>Broadcast Intents<\/strong> s\u00e3o usadas para enviar eventos para m\u00faltiplos componentes do sistema ou de aplicativos. Existem dois tipos principais de broadcasts: <em>sistem\u00e1ticos<\/em> (enviados pelo sistema) e <em>customizados<\/em> (enviados pelos aplicativos). Componentes chamados <em>Broadcast Receivers<\/em> s\u00e3o usados para receber e tratar esses eventos.<\/p>\n\n\n\n<p><strong>Caracter\u00edsticas:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pode ser enviado para m\u00faltiplos receptores.<\/li>\n\n\n\n<li>Usado para eventos do sistema como mudan\u00e7as na conectividade, bateria fraca, etc.<\/li>\n\n\n\n<li>Pode ser registrado dinamicamente no c\u00f3digo ou estaticamente no manifesto do aplicativo.<\/li>\n<\/ul>\n\n\n\n<p><strong>Exemplo Pr\u00e1tico: Receber Altera\u00e7\u00f5es na Conectividade de Rede<\/strong><\/p>\n\n\n\n<p>Primeiro, registre um BroadcastReceiver no manifesto do aplicativo para receber altera\u00e7\u00f5es na conectividade:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:xhtml decode:true \" >&lt;receiver android:name=\".NetworkChangeReceiver\"&gt;\n  &lt;intent-filter&gt;\n    &lt;action android:name=\"android.net.conn.CONNECTIVITY_CHANGE\"\/&gt;\n  &lt;\/intent-filter&gt;\n&lt;\/receiver&gt;\n<\/pre><\/div>\n\n\n\n<p>Depois, implemente o <code>BroadcastReceiver<\/code> em Delphi:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >uses\n  Androidapi.JNIBridge, \n  Androidapi.JNI.JavaTypes, \n  Androidapi.JNI.GraphicsContentViewText, \n  FMX.Helpers.Android;\n\ntype\n  TNetworkChangeReceiver = class(TJavaLocal, JBroadcastReceiver)\n  public\n    procedure onReceive(Context: JContext; Intent: JIntent); cdecl;\n  end;\n\nprocedure TNetworkChangeReceiver.onReceive(Context: JContext; Intent: JIntent);\nbegin\n  if Intent.getAction.equals(TJConnectivityManager.JavaClass.CONNECTIVITY_ACTION) then\n  begin\n    \/\/ Tratar a mudan\u00e7a na conectividade\n    ShowMessage('A conectividade de rede mudou');\n  end;\nend;\n\n\/\/ Registro do Receiver dinamicamente no c\u00f3digo (opcional, se n\u00e3o registrado no manifesto)\nvar\n  Receiver: TNetworkChangeReceiver;\nbegin\n  Receiver := TNetworkChangeReceiver.Create;\n  TAndroidHelper.Context.registerReceiver(Receiver, TJIntentFilter.JavaClass.init(TJConnectivityManager.JavaClass.CONNECTIVITY_ACTION));\nend;\n<\/pre><\/div>\n\n\n\n<p>Hoje o artigo foi mais te\u00f3rico, deixe nos coment\u00e1rios desse artigo se deseja que fa\u00e7amos algo mais detalhado, com exemplos mais pr\u00e1ticos do dia a dia e se deseja um v\u00eddeo ou live onde possamos ver tudo funcionando. <\/p>\n\n\n\n<p>Recomendo que assista ao v\u00eddeo do nosso amigo Landerson Gomes.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Intents Android: Novos Recursos com Delphi 10 Seattle\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/ZCQ1y3qi92s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Conclus\u00e3o<\/h3>\n\n\n\n<p>Os diferentes tipos de Intents no Android permitem que os aplicativos se comuniquem e interajam de maneiras flex\u00edveis e poderosas. Intents Impl\u00edcitas permitem a\u00e7\u00f5es gerais onde o sistema escolhe o melhor componente para responder. Intents Expl\u00edcitas s\u00e3o usadas para comunica\u00e7\u00e3o direta entre componentes espec\u00edficos. Broadcast Intents permitem a dissemina\u00e7\u00e3o de eventos para m\u00faltiplos receptores, possibilitando rea\u00e7\u00f5es a mudan\u00e7as no sistema ou outras a\u00e7\u00f5es espec\u00edficas. Compreender e utilizar esses tipos de Intents efetivamente pode melhorar significativamente a funcionalidade e a integra\u00e7\u00e3o dos aplicativos Android desenvolvidos com Delphi.<\/p>\n\n\n\n<p>Comunidade no <a href=\"https:\/\/t.me\/AdrianoSantosCommunity\">Telegram<\/a><\/p>\n\n\n\n<p>\ud83d\ude80Comente no campo abaixo \ud83d\udc47\ud83d\udc47\ud83d\udc47 o que achou e qual sua d\u00favida.<\/p>\n\n\n\n<p>Te vejo na pr\u00f3xima<\/p>\n\n\n\n<p>Adriano Santos<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No Android, Intents s\u00e3o uma forma de comunica\u00e7\u00e3o entre diferentes componentes do sistema e entre aplicativos. Elas permitem que uma aplica\u00e7\u00e3o solicite uma a\u00e7\u00e3o de outra aplica\u00e7\u00e3o, como abrir uma p\u00e1gina web, enviar um e-mail ou iniciar uma nova atividade dentro do mesmo aplicativo. Intents podem ser expl\u00edcitas, quando o componente alvo \u00e9 especificado, ou [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":667,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-661","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=661"}],"version-history":[{"count":6,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/661\/revisions"}],"predecessor-version":[{"id":668,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/661\/revisions\/668"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/667"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=661"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}