[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-integrations":3,"footer-settings":44,"homepage":189,"main-navigation":256,"blog-post-nav-nav":918,"blog-post-nav-[USE LATEST FEATURED]":941,"blog-floating-windows-on-android-9-shortcomings":961},[4,8,12,16,20,24,28,32,36,40],{"id":5,"name":6,"slug":7},33,"React","react",{"id":9,"name":10,"slug":11},19,"Vue.js","vuejs",{"id":13,"name":14,"slug":15},1,"Flutter","flutter",{"id":17,"name":18,"slug":19},31,"JavaScript","javascript",{"id":21,"name":22,"slug":23},12,"JSON","json",{"id":25,"name":26,"slug":27},21,"XLIFF","xliff",{"id":29,"name":30,"slug":31},20,"PO","po",{"id":33,"name":34,"slug":35},26,"RESX","resx",{"id":37,"name":38,"slug":39},72,"Strapi","strapi",{"id":41,"name":42,"slug":43},60,"Figma","figma",{"id":13,"status":45,"security_section_title":46,"loved_section_title":47,"columns":48,"social_links":149,"policy_links":179},"published","Secured & trusted","Loved by users",[49,66,86,112,116],{"id":13,"status":45,"sort":50,"title":51,"column_key":52,"links":53},null,"Localazy","connect",[54,58,62],{"id":55,"status":45,"sort":13,"title":56,"url":57},11,"Book a demo","___LOCALAZY_MEETING_URL___",{"id":21,"status":45,"sort":59,"title":60,"url":61},2,"Contact","\u002Fcontact",{"id":25,"status":45,"sort":63,"title":64,"url":65},3,"About us","\u002Fabout-us",{"id":59,"status":45,"sort":50,"title":67,"column_key":68,"links":69},"Programs","programs",[70,74,78,82],{"id":13,"status":45,"sort":71,"title":72,"url":73},4,"Partner Program","\u002Fpartnership",{"id":59,"status":45,"sort":75,"title":76,"url":77},5,"Ambassador Program","\u002Fambassador",{"id":63,"status":45,"sort":79,"title":80,"url":81},6,"Startup Program","\u002Ffor\u002Fstartups",{"id":71,"status":45,"sort":83,"title":84,"url":85},7,"Nonprofits","\u002Ffor\u002Fnonprofit",{"id":63,"status":45,"sort":50,"title":87,"column_key":88,"links":89},"Use Cases","use_cases",[90,94,98,102,105,108],{"id":75,"status":45,"sort":91,"title":92,"url":93},8,"Software Localization","\u002Fterm\u002Fsoftware-localization",{"id":79,"status":45,"sort":95,"title":96,"url":97},9,"Machine Translation Services","\u002Ffeatures\u002Fmachine-translation",{"id":83,"status":45,"sort":99,"title":100,"url":101},10,"Translation API","\u002Ffeatures\u002Ftranslation-api",{"id":91,"status":45,"sort":55,"title":103,"url":104},"Crowdsourced Translations","\u002Ffeatures\u002Fshare-tm",{"id":95,"status":45,"sort":21,"title":106,"url":107},"Figma i18n & localization","\u002Ffeatures\u002Ffigma-localization-plugin",{"id":99,"status":45,"sort":109,"title":110,"url":111},13,"Translation as a Service","\u002Fterm\u002Ftranslation-service",{"id":71,"status":45,"sort":50,"title":113,"column_key":114,"links":115},"Integrations","integrations",[],{"id":75,"status":45,"sort":50,"title":117,"column_key":118,"links":119},"Resources","resources",[120,124,128,132,136,140,143,146],{"id":109,"status":45,"sort":121,"title":122,"url":123},14,"Documentation","\u002Fdocs",{"id":121,"status":45,"sort":125,"title":126,"url":127},15,"Dictionary","\u002Fdictionary",{"id":125,"status":45,"sort":129,"title":130,"url":131},16,"Case Studies","\u002Fcase-study",{"id":129,"status":45,"sort":133,"title":134,"url":135},17,"Discussion forum","___DISCUSS_URL___",{"id":133,"status":45,"sort":137,"title":138,"url":139},18,"Localization Blog","\u002Fblog",{"id":137,"status":45,"sort":9,"title":141,"url":142},"FAQ","\u002Ffaq",{"id":9,"status":45,"sort":29,"title":144,"url":145},"Pricing","\u002Fpricing",{"id":29,"status":45,"sort":25,"title":147,"url":148},"Brand assets","https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Fu\u002F1\u002Ffolders\u002F1tZqsZHBlGelz7A2FwTsiwrs4j3sd9HTk",[150,155,160,165,170,175],{"id":13,"status":45,"sort":50,"platform":151,"icon":152,"url":153,"label":154},"feed","rss","\u002Ffeed.xml","Localazy RSS Feed",{"id":59,"status":45,"sort":50,"platform":156,"icon":157,"url":158,"label":159},"facebook","fb-logo","https:\u002F\u002Fwww.facebook.com\u002Flocalazy\u002F","Localazy facebook",{"id":63,"status":45,"sort":50,"platform":161,"icon":162,"url":163,"label":164},"github","github-logo","https:\u002F\u002Fgithub.com\u002Flocalazy","Localazy GitHub",{"id":71,"status":45,"sort":50,"platform":166,"icon":167,"url":168,"label":169},"x","x-twitter","https:\u002F\u002Fx.com\u002Flocalazy","Localazy X",{"id":75,"status":45,"sort":50,"platform":171,"icon":172,"url":173,"label":174},"linkedin","linkedin-logo","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002F37836599\u002F","Localazy LinkedIn",{"id":79,"status":45,"sort":50,"platform":176,"icon":177,"url":135,"label":178},"discourse","discourse-logo","Localazy Discourse",[180,183,186],{"id":13,"status":45,"sort":50,"title":181,"url":182,"action":50},"Privacy policy","\u002Fprivacy-policy",{"id":59,"status":45,"sort":50,"title":184,"url":185,"action":50},"Terms & Conditions","\u002Fterms-and-conditions",{"id":63,"status":45,"sort":50,"title":187,"url":50,"action":188},"Cookies","cookie-consent",{"status":45,"header_badges":190,"footer_badges":208,"footer_secured_badges":214,"slider_badges":226},[191,198,203],{"id":13,"status":45,"sort":50,"link":192,"title":193,"badgeType":194,"badgeName":195,"metadata":50,"image":196},"https:\u002F\u002Fwww.g2.com\u002Fproducts\u002Flocalazy\u002Freviews","Best meets requirements","Other","G2-winter-24-best-meets-requirments",{"id":197},"8d5dd6fd-6995-4c92-8219-a6ed5ba6acdc",{"id":59,"status":45,"sort":50,"link":192,"title":199,"badgeType":194,"badgeName":200,"metadata":50,"image":201},"Best support","G2-winter-24-best-support",{"id":202},"e59dd465-84d9-45c7-987d-dd4048fd6992",{"id":63,"status":45,"sort":50,"link":192,"title":204,"badgeType":194,"badgeName":205,"metadata":50,"image":206},"Easiest admin","G2-winter-24-easiest-admin",{"id":207},"5f12c4c8-bec0-47cf-87b4-a4502e9f1bd2",[209],{"id":21,"status":45,"sort":50,"link":192,"title":210,"badgeType":194,"badgeName":211,"metadata":50,"image":212},"Users love us","Users love us 25",{"id":213},"232416a5-86ba-4be6-85a5-b88802003d53",[215,221],{"id":55,"status":45,"sort":50,"link":216,"title":217,"badgeType":194,"badgeName":218,"metadata":50,"image":219},"https:\u002F\u002Fsprinto.com\u002Fget-iso-27001\u002F","Sprinto ISO 27001","Sprinto ISO 27001 certificate",{"id":220},"c1c6c06c-6caf-4b78-8a7e-9606c395eb61",{"id":109,"status":45,"sort":50,"link":222,"title":223,"badgeType":194,"badgeName":223,"metadata":50,"image":224},"https:\u002F\u002Fwww.aicpa.org\u002Fsoc4so","SOC certificate",{"id":225},"4f4bc0a6-09a0-41df-8295-8f990d96d941",[227,233,237,241,245,249,254],{"id":75,"status":45,"sort":50,"link":192,"title":228,"badgeType":194,"badgeName":229,"metadata":230,"image":231},"Most likely to recommend","a","",{"id":232},"da055731-3f11-4fc7-96f2-c11c0b84c831",{"id":79,"status":45,"sort":50,"link":192,"title":234,"badgeType":194,"badgeName":50,"metadata":50,"image":235},"EMEA High Performer",{"id":236},"586fb488-81f2-41db-a4e8-ef309e50c0e6",{"id":83,"status":45,"sort":50,"link":192,"title":238,"badgeType":194,"badgeName":50,"metadata":50,"image":239},"Ease of Doing Business With",{"id":240},"bfa26865-430e-463d-9886-cb56a8a8ecf6",{"id":91,"status":45,"sort":50,"link":192,"title":242,"badgeType":194,"badgeName":50,"metadata":50,"image":243},"High Performer",{"id":244},"2cc1ba0f-c23a-4c97-ad4a-a655c97466fe",{"id":95,"status":45,"sort":50,"link":192,"title":246,"badgeType":194,"badgeName":50,"metadata":50,"image":247},"Fastest Implementation",{"id":248},"6f297758-1c95-45f4-a6e9-528319897132",{"id":99,"status":45,"sort":50,"link":250,"title":251,"badgeType":194,"badgeName":50,"metadata":50,"image":252},"https:\u002F\u002Fwww.intercert.com\u002Fservices\u002Fgovernance-risk-compliance\u002Fiso-iec-27001","Intercert ISO 27001",{"id":253},"0521a5f1-e1f2-4da6-a2bc-dc92773f2a7b",{"id":55,"status":45,"sort":50,"link":216,"title":217,"badgeType":194,"badgeName":218,"metadata":50,"image":255},{"id":220},[257,449,679,790,913,915],{"id":59,"name":258,"url":50,"url_text":50,"status":45,"groups":259},"Solutions",[260,271,342,376],{"navigation_items_group_id":261},{"id":63,"sort":75,"status":45,"name":262,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":265,"show_all_url":50,"represent_as_tile":263,"items":266},"Featured Article",false,"top",true,[267],{"collection":268,"item":269},"blog_post_navigation_item_type",{"id":71,"status":45,"sort":50,"show_author_img":265,"blog_post_tag":270,"description":50},"nav",{"navigation_items_group_id":272},{"id":75,"sort":13,"status":45,"name":273,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":274,"represent_as_tile":265,"items":275},"Your Role","\u002Froles",[276,288,298,308,319,331],{"collection":277,"item":278},"relation_navigation_item_type",{"id":13,"status":45,"sort":50,"name":279,"item":280},"CMO",[281],{"collection":282,"item":283},"personas",{"id":13,"status":45,"sort":50,"slug":284,"icon":285},"chief-marketing-officers",{"id":286,"title":287},"526097d8-176f-48e5-83d3-2fc4d77061f9","La Mail Bulk",{"collection":277,"item":289},{"id":63,"status":45,"sort":50,"name":290,"item":291},"CTO",[292],{"collection":282,"item":293},{"id":71,"status":45,"sort":50,"slug":294,"icon":295},"chief-technical-officers",{"id":296,"title":297},"f808fdf0-c78b-4294-ba59-fe25f46fe825","La Mechanic",{"collection":277,"item":299},{"id":29,"status":45,"sort":50,"name":300,"item":301},"Product Manager",[302],{"collection":282,"item":303},{"id":137,"status":45,"sort":50,"slug":304,"icon":305},"product-managers",{"id":306,"title":307},"ea39586a-21fc-4b34-ba87-496028e5198f","La Worker",{"collection":277,"item":309},{"id":310,"status":45,"sort":50,"name":311,"item":312},37,"Translator",[313],{"collection":282,"item":314},{"id":29,"status":45,"sort":50,"slug":315,"icon":316},"professional-translators",{"id":317,"title":318},"07945171-d51d-4ca8-96c0-21cde9db258f","La Chat",{"collection":277,"item":320},{"id":321,"status":45,"sort":50,"name":322,"item":323},38,"Developer",[324],{"collection":282,"item":325},{"id":326,"status":45,"sort":50,"slug":327,"icon":328},30,"software-developers",{"id":329,"title":330},"1806e46d-c551-4845-bf42-4407344d229e","La Terminal",{"collection":277,"item":332},{"id":333,"status":45,"sort":50,"name":334,"item":335},27,"Localization Manager",[336],{"collection":282,"item":337},{"id":79,"status":45,"sort":50,"slug":338,"icon":339},"localization-managers",{"id":340,"title":341},"dac69bd1-bf5d-41d0-87d4-dd13e314698a","La Language",{"navigation_items_group_id":343},{"id":95,"sort":63,"status":45,"name":344,"render_show_all_url":263,"show_all_url_position":345,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":346},"Use cases","bottom",[347,353,357,362,366,371],{"collection":348,"item":349},"simple_link_navigation_item_type",{"id":350,"status":45,"sort":50,"url":351,"url_text":352,"show_favorite_icon":263},24,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fsoftware-localization","Software localization",{"collection":348,"item":354},{"id":33,"status":45,"sort":50,"url":355,"url_text":356,"show_favorite_icon":263},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fmobile-app-localization","Mobile app localization",{"collection":348,"item":358},{"id":359,"status":45,"sort":50,"url":360,"url_text":361,"show_favorite_icon":263},25,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fwebsite-localization","Website localization",{"collection":348,"item":363},{"id":333,"status":45,"sort":50,"url":364,"url_text":365,"show_favorite_icon":263},"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fdesign-localization","Design localization",{"collection":348,"item":367},{"id":368,"status":45,"sort":50,"url":369,"url_text":370,"show_favorite_icon":263},28,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fgame-localization","Game localization",{"collection":348,"item":372},{"id":373,"status":45,"sort":50,"url":374,"url_text":375,"show_favorite_icon":263},29,"https:\u002F\u002Flocalazy.com\u002Fuse-cases\u002Fhelp-and-docs-localization","Help & docs localization",{"navigation_items_group_id":377},{"id":91,"sort":59,"status":45,"name":378,"render_show_all_url":263,"show_all_url_position":345,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":379},"Industry",[380,391,402,412,422,431,442],{"collection":277,"item":381},{"id":382,"status":45,"sort":50,"name":383,"item":384},23,"Digital Agencies",[385],{"collection":282,"item":386},{"id":83,"status":45,"sort":50,"slug":387,"icon":388},"digital-agencies",{"id":389,"title":390},"547f5619-b21d-4b29-86f1-8b2200313cde","La Digi Agency",{"collection":277,"item":392},{"id":393,"status":45,"sort":50,"name":394,"item":395},39,"Startups & SaaS",[396],{"collection":282,"item":397},{"id":59,"status":45,"sort":50,"slug":398,"icon":399},"startups",{"id":400,"title":401},"da1516e2-4afc-40a2-bcbf-a8161e2d610d","La Saa S",{"collection":277,"item":403},{"id":59,"status":45,"sort":50,"name":404,"item":405},"E-commerce",[406],{"collection":282,"item":407},{"id":75,"status":45,"sort":50,"slug":408,"icon":409},"e-commerce",{"id":410,"title":411},"a3d09cd2-054f-4bb5-a0a2-d3d207db65df","La Ecommerce",{"collection":277,"item":413},{"id":9,"status":45,"sort":50,"name":414,"item":415},"FinTech Platforms",[416],{"collection":282,"item":417},{"id":333,"status":45,"sort":50,"slug":418,"icon":419},"fintech",{"id":420,"title":421},"147339ba-07d1-4e5e-baad-23d27e60c919","La Money",{"collection":277,"item":423},{"id":350,"status":45,"sort":50,"name":424,"item":425},"Translation Agencies",[426],{"collection":282,"item":427},{"id":350,"status":45,"sort":50,"slug":428,"icon":429},"translation-agencies",{"id":430,"title":341},"15d6fe33-2af8-4d6e-933d-5caa64394511",{"collection":277,"item":432},{"id":433,"status":45,"sort":50,"name":434,"item":435},22,"Travel & Tourism",[436],{"collection":282,"item":437},{"id":63,"status":45,"sort":50,"slug":438,"icon":439},"tourism",{"id":440,"title":441},"23a785e8-0ae5-4c4b-8452-aab1b58182a6","La Travel",{"collection":277,"item":443},{"id":359,"status":45,"sort":50,"name":444,"item":445},"Nonprofit Causes",[446],{"collection":282,"item":447},{"id":368,"status":45,"sort":50,"slug":448,"icon":50},"nonprofit",{"id":75,"name":450,"url":50,"url_text":50,"status":45,"groups":451},"Features",[452,519,575,624],{"navigation_items_group_id":453},{"id":55,"sort":79,"status":45,"name":454,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":455},"Localization",[456,465,474,482,490,494,502,511],{"collection":277,"item":457},{"id":458,"status":45,"sort":50,"name":459,"item":460},44,"Human translation services",[461],{"collection":462,"item":463},"products",{"id":95,"status":45,"slug":464},"human-translation-services",{"collection":277,"item":466},{"id":467,"status":45,"sort":50,"name":468,"item":469},45,"Translation management",[470],{"collection":471,"item":472},"term_landing_page",{"id":373,"status":45,"slug":473},"translation-management-system",{"collection":277,"item":475},{"id":476,"status":45,"sort":50,"name":477,"item":478},46,"Context Screenshots",[479],{"collection":462,"item":480},{"id":109,"status":45,"slug":481},"context-screenshots-ocr",{"collection":277,"item":483},{"id":484,"status":45,"sort":50,"name":485,"item":486},47,"Translation Glossary",[487],{"collection":462,"item":488},{"id":133,"status":45,"slug":489},"glossary",{"collection":348,"item":491},{"id":71,"status":45,"sort":50,"url":492,"url_text":493,"show_favorite_icon":263},"\u002Fdocs\u002Fgeneral\u002Freviewing-translations","Quality control",{"collection":277,"item":495},{"id":496,"status":45,"sort":50,"name":497,"item":498},34,"Connected Projects",[499],{"collection":462,"item":500},{"id":13,"status":45,"slug":501},"connected-projects",{"collection":277,"item":503},{"id":504,"status":45,"sort":50,"name":505,"item":506},64,"Plural handling",[507],{"collection":462,"item":508},{"id":509,"status":45,"slug":510},32,"plurals",{"collection":277,"item":512},{"id":513,"status":45,"sort":50,"name":514,"item":515},65,"Style guides",[516],{"collection":462,"item":517},{"id":321,"status":45,"slug":518},"style-guide",{"navigation_items_group_id":520},{"id":21,"sort":83,"status":45,"name":521,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":522},"Translation",[523,531,539,543,551,558,567],{"collection":277,"item":524},{"id":525,"status":45,"sort":50,"name":526,"item":527},36,"Professional translations",[528],{"collection":471,"item":529},{"id":326,"status":45,"slug":530},"professional-translation-services",{"collection":277,"item":532},{"id":533,"status":45,"sort":50,"name":534,"item":535},48,"Crowdsourced translations",[536],{"collection":462,"item":537},{"id":91,"status":45,"slug":538},"share-tm",{"collection":348,"item":540},{"id":75,"status":45,"sort":50,"url":541,"url_text":542,"show_favorite_icon":263},"\u002Fdocs\u002Fgeneral\u002Ftranslating-strings","Translation interface",{"collection":277,"item":544},{"id":545,"status":45,"sort":50,"name":546,"item":547},55,"Machine translations",[548],{"collection":462,"item":549},{"id":75,"status":45,"slug":550},"machine-translation",{"collection":277,"item":552},{"id":41,"status":45,"sort":50,"name":553,"item":554},"Localazy AI translation",[555],{"collection":462,"item":556},{"id":373,"status":45,"slug":557},"localazy-ai",{"collection":277,"item":559},{"id":560,"status":45,"sort":50,"name":561,"item":562},61,"Translation Memory",[563],{"collection":462,"item":564},{"id":565,"status":45,"slug":566},35,"translation-memory",{"collection":277,"item":568},{"id":569,"status":45,"sort":50,"name":570,"item":571},63,"Code & placeholders",[572],{"collection":462,"item":573},{"id":326,"status":45,"slug":574},"code-and-placeholders",{"navigation_items_group_id":576},{"id":109,"sort":91,"status":45,"name":577,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":578},"Management",[579,583,591,599,608,616,620],{"collection":348,"item":580},{"id":91,"status":45,"sort":50,"url":581,"url_text":582,"show_favorite_icon":263},"\u002Fdocs\u002Fgeneral\u002Fdefining-user-roles","User roles",{"collection":277,"item":584},{"id":585,"status":45,"sort":50,"name":586,"item":587},51,"Duplicity Linking",[588],{"collection":462,"item":589},{"id":9,"status":45,"slug":590},"duplicity-linking",{"collection":277,"item":592},{"id":593,"status":45,"sort":50,"name":594,"item":595},52,"Language Permissions",[596],{"collection":462,"item":597},{"id":25,"status":45,"slug":598},"language-permissions",{"collection":277,"item":600},{"id":601,"status":602,"sort":50,"name":603,"item":604},53,"draft","Automations",[605],{"collection":462,"item":606},{"id":29,"status":45,"slug":607},"automations",{"collection":277,"item":609},{"id":610,"status":45,"sort":50,"name":611,"item":612},58,"Branching",[613],{"collection":462,"item":614},{"id":333,"status":45,"slug":615},"branching",{"collection":348,"item":617},{"id":25,"status":602,"sort":50,"url":618,"url_text":619,"show_favorite_icon":263},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Fsso-configuration","SSO",{"collection":348,"item":621},{"id":433,"status":602,"sort":50,"url":622,"url_text":623,"show_favorite_icon":263},"https:\u002F\u002Flocalazy.com\u002Fdocs\u002Fgeneral\u002Flanguage-statistics","Reporting",{"navigation_items_group_id":625},{"id":121,"sort":95,"status":45,"name":626,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":627},"Development",[628,634,641,648,655,663,671],{"collection":277,"item":629},{"id":373,"status":45,"sort":50,"name":100,"item":630},[631],{"collection":462,"item":632},{"id":55,"status":45,"slug":633},"translation-api",{"collection":277,"item":635},{"id":5,"status":45,"sort":50,"name":636,"item":637},"Localazy CLI",[638],{"collection":462,"item":639},{"id":83,"status":45,"slug":640},"cli",{"collection":277,"item":642},{"id":509,"status":45,"sort":50,"name":643,"item":644},"Language CDN",[645],{"collection":462,"item":646},{"id":71,"status":45,"slug":647},"language-cdn",{"collection":277,"item":649},{"id":368,"status":45,"sort":50,"name":650,"item":651},"Releases",[652],{"collection":462,"item":653},{"id":79,"status":45,"slug":654},"releases",{"collection":277,"item":656},{"id":657,"status":602,"sort":50,"name":658,"item":659},57,"Format Conversions",[660],{"collection":462,"item":661},{"id":59,"status":45,"slug":662},"format-conversions",{"collection":277,"item":664},{"id":665,"status":45,"sort":50,"name":666,"item":667},59,"Webhooks",[668],{"collection":462,"item":669},{"id":17,"status":45,"slug":670},"webhooks",{"collection":277,"item":672},{"id":673,"status":45,"sort":50,"name":674,"item":675},62,"Export Aliases",[676],{"collection":462,"item":677},{"id":5,"status":45,"slug":678},"export-aliases",{"id":71,"name":113,"url":50,"url_text":50,"status":45,"groups":680},[681,780],{"navigation_items_group_id":682},{"id":83,"sort":99,"status":45,"name":683,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":684},"Most popular",[685],{"collection":277,"item":686},{"id":21,"status":45,"sort":50,"name":113,"item":687},[688,696,703,708,713,719,724,731,736,741,746,752,757,764,772],{"collection":689,"item":690},"platforms",{"id":79,"status":45,"sort":13,"slug":691,"name":692,"icon":693},"android","Android",{"id":694,"title":695},"ff965add-53b0-44ad-b27c-ea4ef641d384","Ic Outline Android",{"collection":689,"item":697},{"id":83,"status":45,"sort":59,"slug":698,"name":699,"icon":700},"ios","iOS",{"id":701,"title":702},"886285d7-816a-4430-b5a5-edfe307b238e","Ios",{"collection":689,"item":704},{"id":5,"status":45,"sort":63,"slug":7,"name":6,"icon":705},{"id":706,"title":707},"26757a90-88a3-4a94-b587-9f38614ed3bd","Logos React",{"collection":689,"item":709},{"id":9,"status":45,"sort":71,"slug":11,"name":10,"icon":710},{"id":711,"title":712},"6180b41f-3249-47d3-adcd-50fe1cf11bf1","Vue",{"collection":689,"item":714},{"id":129,"status":45,"sort":75,"slug":715,"name":716,"icon":717},"angular","Angular",{"id":718,"title":716},"2a31a97a-48c5-4531-aa36-41c9dd0bdbef",{"collection":689,"item":720},{"id":13,"status":45,"sort":79,"slug":15,"name":14,"icon":721},{"id":722,"title":723},"b9f13a11-9328-4a03-86cf-b20de0685606","Logos Flutter",{"collection":689,"item":725},{"id":63,"status":45,"sort":55,"slug":726,"name":727,"icon":728},"typescript","TypeScript",{"id":729,"title":730},"8d1319b5-8a96-4199-8407-00add3418b1f","Logos Typescript Icon",{"collection":689,"item":732},{"id":17,"status":45,"sort":21,"slug":19,"name":18,"icon":733},{"id":734,"title":735},"4218d0c9-7e6b-494d-9663-37ceaf93ee8c","Logos Javascript",{"collection":689,"item":737},{"id":21,"status":45,"sort":29,"slug":23,"name":22,"icon":738},{"id":739,"title":740},"99ac3b7c-dba5-4693-a4f4-1f27a6d7782d","Logos Json",{"collection":689,"item":742},{"id":25,"status":45,"sort":25,"slug":27,"name":26,"icon":743},{"id":744,"title":745},"a1c098b6-2045-49dc-9860-a4ee801aadbf","Xliff Format Icon (2)",{"collection":689,"item":747},{"id":37,"status":45,"sort":748,"slug":39,"name":38,"icon":749},54,{"id":750,"title":751},"cde7f1d0-f2e0-4243-929e-a3f8f9146e69","Strapi Logo Purple",{"collection":689,"item":753},{"id":41,"status":45,"sort":545,"slug":43,"name":42,"icon":754},{"id":755,"title":756},"813745a4-a77d-4735-93b7-e0dd731b2304","Figma Icon",{"collection":689,"item":758},{"id":585,"status":45,"sort":484,"slug":759,"name":760,"icon":761},"microsoft-excel","Microsoft Excel",{"id":762,"title":763},"7a175955-7b96-4561-939f-a0e1924faa40","Excel",{"collection":689,"item":765},{"id":766,"status":45,"sort":560,"slug":767,"name":768,"icon":769},66,"github-actions","GitHub Actions",{"id":770,"title":771},"da17554f-ac6d-443d-9bac-1f29645ec1c6","Github Icon",{"collection":689,"item":773},{"id":774,"status":45,"sort":775,"slug":776,"name":777,"icon":778},97,999,"webflow","Webflow",{"id":779,"title":777},"ff43a386-52f8-499f-b77c-ab9a30f4a77e",{"navigation_items_group_id":781},{"id":71,"sort":55,"status":45,"name":782,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":783},"Explore more",[784],{"collection":785,"item":786},"text_link_navigation_item_type",{"id":13,"status":45,"sort":50,"text":787,"url":788,"url_text":789},"Localazy is a technology-agnostic platform supporting 50+ frameworks, file formats & popular tools.","\u002Fintegrations","See all integrations",{"id":13,"name":117,"url":50,"url_text":50,"status":45,"groups":791},[792,816,822],{"navigation_items_group_id":793},{"id":13,"sort":21,"status":45,"name":794,"render_show_all_url":263,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":50,"represent_as_tile":263,"items":795},"Helpful Links",[796,799,801,805,807,810,812],{"collection":348,"item":797},{"id":109,"status":45,"sort":50,"url":139,"url_text":798,"show_favorite_icon":265},"Localazy Blog",{"collection":348,"item":800},{"id":121,"status":45,"sort":50,"url":123,"url_text":122,"show_favorite_icon":265},{"collection":348,"item":802},{"id":13,"status":45,"sort":50,"url":803,"url_text":804,"show_favorite_icon":263},"https:\u002F\u002Fdiscuss.localazy.com\u002F","Discussion Forum",{"collection":348,"item":806},{"id":21,"status":45,"sort":50,"url":131,"url_text":130,"show_favorite_icon":263},{"collection":348,"item":808},{"id":63,"status":45,"sort":50,"url":73,"url_text":809,"show_favorite_icon":263},"Become a Partner",{"collection":348,"item":811},{"id":125,"status":45,"sort":50,"url":142,"url_text":141,"show_favorite_icon":263},{"collection":348,"item":813},{"id":133,"status":45,"sort":50,"url":814,"url_text":815,"show_favorite_icon":263},"\u002Ftags\u002Frelease-update","Release Updates",{"navigation_items_group_id":817},{"id":59,"sort":121,"status":45,"name":798,"render_show_all_url":265,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":139,"represent_as_tile":263,"items":818},[819],{"collection":268,"item":820},{"id":63,"status":45,"sort":50,"show_author_img":263,"blog_post_tag":821,"description":50},"[USE LATEST FEATURED]",{"navigation_items_group_id":823},{"id":79,"sort":109,"status":45,"name":122,"render_show_all_url":265,"show_all_url_position":264,"show_favorite_icon":263,"show_all_url":123,"represent_as_tile":263,"items":824},[825,839,851,862,874,884,895,903],{"collection":277,"item":826},{"id":71,"status":45,"sort":50,"name":827,"item":828},"General",[829],{"collection":830,"item":831},"docs_section",{"id":59,"status":45,"sort":13,"slug":832,"name":827,"icon":833,"featured_icon":836},"general",{"id":834,"title":835},"423101f1-308c-42f1-8dfe-53272019e7cb","Global",{"id":837,"title":838},"0f7ca4cb-dc3b-4f62-b476-132ed5c4931f","General Doc",{"collection":277,"item":840},{"id":75,"status":45,"sort":50,"name":841,"item":842},"CLI",[843],{"collection":830,"item":844},{"id":63,"status":45,"sort":59,"slug":640,"name":841,"icon":845,"featured_icon":848},{"id":846,"title":847},"2f7a4573-8265-4d76-8d55-ce0cc79b8983","Cli",{"id":849,"title":850},"3f76ff7b-0e74-4046-bb03-4ca99c3b66d5","Doc Cat Cli",{"collection":277,"item":852},{"id":91,"status":45,"sort":50,"name":853,"item":854},"API",[855],{"collection":830,"item":856},{"id":29,"status":45,"sort":63,"slug":857,"name":853,"icon":858,"featured_icon":859},"api",{"id":846,"title":847},{"id":860,"title":861},"20866781-e69b-4e01-9456-05437487b75c","API Doc",{"collection":277,"item":863},{"id":864,"status":45,"sort":50,"name":865,"item":866},50,"CDN",[867],{"collection":830,"item":868},{"id":33,"status":45,"sort":71,"slug":869,"name":865,"icon":870,"featured_icon":871},"cdn",{"id":834,"title":835},{"id":872,"title":873},"a8ee9cb7-4e02-41f0-b595-eb518c3085b6","Doc Cat Cdn",{"collection":277,"item":875},{"id":79,"status":45,"sort":50,"name":692,"item":876},[877],{"collection":830,"item":878},{"id":13,"status":45,"sort":75,"slug":691,"name":692,"icon":879,"featured_icon":881},{"id":880,"title":692},"fb8329ae-0c0c-4fbc-bcdc-83f2eeda1039",{"id":882,"title":883},"f7c0dec8-5b42-4943-ab3a-e3665723ad6f","Doc Cat Android",{"collection":277,"item":885},{"id":83,"status":45,"sort":50,"name":699,"item":886},[887],{"collection":830,"item":888},{"id":71,"status":45,"sort":79,"slug":698,"name":699,"icon":889,"featured_icon":892},{"id":890,"title":891},"289e136c-55df-4d51-847b-1782a2308ee4","Ios Blue",{"id":893,"title":894},"2968d3f0-14b5-4427-82e7-f1ea2de17846","Doc Cat Ios",{"collection":277,"item":896},{"id":95,"status":45,"sort":50,"name":42,"item":897},[898],{"collection":830,"item":899},{"id":25,"status":45,"sort":83,"slug":43,"name":42,"icon":900,"featured_icon":901},{"id":846,"title":847},{"id":902,"title":42},"f5e66b5b-a439-47f6-af4a-6ad261de2e87",{"collection":277,"item":904},{"id":99,"status":45,"sort":50,"name":38,"item":905},[906],{"collection":830,"item":907},{"id":382,"status":45,"sort":91,"slug":39,"name":38,"icon":908,"featured_icon":910},{"id":909,"title":38},"3b4b03c7-e131-49e6-a014-c8c2c8a2751e",{"id":911,"title":912},"1dd05c76-e517-4aea-a3d8-49cfddb40056","Strapi Doc",{"id":63,"name":144,"url":145,"url_text":144,"status":45,"groups":914},[],{"id":79,"name":56,"url":916,"url_text":56,"status":45,"groups":917},"\u002Fbook-demo",[],{"id":919,"owner":920,"created_by":50,"sort":50,"title":925,"slug":926,"modified_on":230,"created_on":927,"pinned":263,"badge":50,"priority":928,"main_image":929,"status":45,"tags":930,"dictionary":939,"reading_time":940,"excerpt":-1,"og_title":230,"og_description":230,"og_image":230},"6aad3e5b8550a3000140af4b",{"id":921,"first_name":922,"last_name":230,"slug":923,"avatar":924},"606c233dcf7b6a0001d1da93","Petr Hodný","petr-hodny","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fpetr.png","Release Update: Revamped tables and filters, document translation support, and more!","release-update-redesigned-translation-table-document-support","2026-09-24T14:58:06.000+02:00","0.7","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F09\u002FRelease-update-Localazy-summer-2026.png",[931,935,938],{"id":41,"created_on":932,"status":45,"label":933,"slug":934,"on_index_page":265},"2026-10-13 19:47:12","Release Update","release-update",{"id":41,"created_on":932,"status":45,"label":936,"slug":937,"on_index_page":263},"Continuous Localization","continuous-localization",{"id":673,"created_on":932,"status":45,"label":38,"slug":39,"on_index_page":265},[],0,{"id":942,"owner":943,"created_by":50,"sort":50,"title":948,"slug":949,"modified_on":230,"created_on":950,"pinned":263,"badge":50,"priority":928,"main_image":951,"status":45,"tags":952,"dictionary":960,"reading_time":940,"excerpt":-1,"og_title":230,"og_description":230,"og_image":230},"6abcee3c8550a3000140b337",{"id":944,"first_name":945,"last_name":230,"slug":946,"avatar":947},"1","Václav Hodek","vaclav-hodek","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2023\u002F12\u002Fvasek.png","Release Update: Localazy AI just got smarter!","release-update-localazy-ai-just-got-smarter","2026-10-01T13:35:08.000+02:00","https:\u002F\u002Fghost.localazy.com\u002Fcontent\u002Fimages\u002F2026\u002F10\u002FRelease-update-Localazy-october-2025-3.png",[953,954,957],{"id":41,"created_on":932,"status":45,"label":933,"slug":934,"on_index_page":265},{"id":504,"created_on":932,"status":45,"label":955,"slug":956,"on_index_page":265},"AI","ai",{"id":41,"created_on":932,"status":45,"label":958,"slug":959,"on_index_page":263},"Automated Localization","automated-localization",[],{"post":962,"relatedPosts":1015,"banner":1044},{"id":963,"owner":964,"created_by":50,"sort":50,"title":965,"slug":966,"modified_on":967,"created_on":967,"pinned":263,"badge":50,"priority":928,"main_image":968,"status":45,"tags":969,"dictionary":976,"reading_time":95,"excerpt":977,"og_title":230,"og_description":230,"og_image":230,"content":978,"meta_title":979,"meta_description":977,"canonical":230,"cta":980,"fullGhostPost":988},"60a37fc7cf7b6a0001d1f19a",{"id":944,"first_name":945,"last_name":230,"slug":946,"avatar":947},"#9 Floating Windows on Android: Shortcomings","floating-windows-on-android-9-shortcomings","2020-09-20T09:58:42.000+02:00","https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F0dd914a9-6337-4c51-acbd-d6429df1c56a",[970,973],{"id":41,"created_on":932,"status":45,"label":971,"slug":972,"on_index_page":263},"Course","course",{"id":41,"created_on":932,"status":45,"label":974,"slug":975,"on_index_page":263},"Floating Windows","floating-windows",[],"Learn how to use floating windows in your Android apps. The ninth lesson teaches you how to overcome some key shortcomings in floating technology. ","\u003C!--kg-card-begin: html-->\u003Cp>Have you ever wondered how to make those floating windows used by Facebook Heads and other apps? Have you ever wanted to use the same technology in your app? It’s easy, and I will guide you through the whole process.\u003C\u002Fp>\n\u003Cp>I’m the author of \u003Ca href=\"https:\u002F\u002Ffloatingapps.net\">Floating Apps\u003C\u002Fa>; the first app of its kind on Google Play and the most popular one with over 8 million downloads. After 6 years of the development of the app, I know a bit about it. It’s sometimes tricky, and I spent months reading documentation and Android source code and experimenting. I received feedback from tens of thousands of users and see various issues on different phones with different Android versions.\u003C\u002Fp>\n\u003Cp>Here’s what I learned along the way.\u003C\u002Fp>\n\u003Cp>Before reading this article, it’s recommended to go through \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-8-the-final-app\">Floating Windows on Android 8: The Final App\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>In this article, I teach you how to overcome some key shortcomings of floating technology.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch2 id=\"mixed-support\" id=\"mixed-support\">Mixed Support \u003Ca class=\"markdownit-header-anchor\" href=\"#mixed-support\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Below, I write about the most significant shortcomings of floating technology. On some devices, some of the described problems may not appear at all. On other devices, some issues exist, some not.\u003C\u002Fp>\n\u003Cp>However, if you want your app to be available to all users, you can’t rely on mixed support. Your app would crash frequently, or it wouldn’t be usable for a large group of users.\u003C\u002Fp>\n\u003Cp>Believe me, I had the privilege to see my app running on thousands of different devices, and I came across weird and illogical bugs and non-standard behavior.\u003C\u002Fp>\n\u003Ch2 id=\"dialogs\" id=\"dialogs\">Dialogs \u003Ca class=\"markdownit-header-anchor\" href=\"#dialogs\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Problem:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The standard Android’s \u003Ccode>AlertDialog\u003C\u002Fcode> needs an underlying activity, and so it’s not possible to use it in floating windows - it would cause the app to crash.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The best solution is to implement custom dialogs based on floating technology.\u003C\u002Fp>\n\u003Cp>In Floating Apps, I implemented many different dialog types:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>yes\u002Fno\u003C\u002Fli>\n\u003Cli>ok\u002Fcancel\u003C\u002Fli>\n\u003Cli>ok only\u003C\u002Fli>\n\u003Cli>select file\u003C\u002Fli>\n\u003Cli>show list\u003C\u002Fli>\n\u003Cli>list of checkboxes\u003C\u002Fli>\n\u003Cli>rich-text\u003C\u002Fli>\n\u003Cli>custom view\u003C\u002Fli>\n\u003Cli>etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>I also implemented modality. When the dialog is shown, the related window is blocked, and the dialog is brought to the front instead of the window.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cem>A simple confirmation dialog.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcontent.localazy.com\u002Fquicknote_8\u002Ffa1.png\" alt=\"Dialog in Floating Apps\">\u003C\u002Fp>\n\u003Ch2 id=\"popup-menus\" id=\"popup-menus\">Popup Menus \u003Ca class=\"markdownit-header-anchor\" href=\"#popup-menus\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Problem:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>With popup menus, there is a similar problem as for \u003Ccode>AlertDialog\u003C\u002Fcode>. It’s not supported in floating windows.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>As for \u003Ccode>AlertDialog\u003C\u002Fcode>, I would recommend implementing custom popup menus based on floating technology.\u003C\u002Fp>\n\u003Cp>I did for Floating Apps. It relies on popups heavily.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cem>A simple popup menu shown over its parent window.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fcontent.localazy.com\u002Fquicknote_8\u002Ffa2.png\" alt=\"Popup menu in Floating Apps\">\u003C\u002Fp>\n\u003Ch2 id=\"copy-and-paste\" id=\"copy-paste\">Copy &amp; Paste \u003Ca class=\"markdownit-header-anchor\" href=\"#copy-and-paste\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Problem:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The copy\u002Fpaste feature is a real problem. It works well only on a few phones. As a rule of thumb, it’s better to consider it unsupported.\u003C\u002Fp>\n\u003Cp>Usually, it’s possible to highlight\u002Fselect text. To be more precise, it’s possible to select words with a long tap.  However, handles used for working with the selection are missing, and therefore, there is no way to select anything else than single words.\u003C\u002Fp>\n\u003Cp>And there’s another issue. The standard popup with actions (copy, paste, select all, translate, etc.) is somehow connected to the underlying activity on most devices and won’t appear at all.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>For short texts, it’s acceptable to implement \u003Ccode>OnLongClickListener\u003C\u002Fcode> and use custom popup. However, as it’s not possible to select the text this way, it’s necessary to introduce \u003Cem>Copy all\u003C\u002Fem>\u002F\u003Cem>Cut all\u003C\u002Fem> functionality. The Facebook Heads uses this solution everywhere. In Floating Apps, I use it too for edit fields.\u003C\u002Fp>\n\u003Cp>In Floating Apps, there are mini-apps for notes taking and text editing, and being able to use \u003Cem>Copy all\u003C\u002Fem> only, it wouldn’t be a suitable solution. For this reason, these apps use WebView in which a full-size \u003Ccode>contenteditable\u003C\u002Fcode> \u003Ccode>div\u003C\u002Fcode> is shown with custom logic for text selection, copying and pasting. It’s not perfect, but better than nothing \u003Cimg class=\"emoji\" draggable=\"false\" alt=\"😃\" src=\"https:\u002F\u002Ftwemoji.maxcdn.com\u002Fv\u002F13.0.2\u002F72x72\u002F1f603.png\"\u002F>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Example:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cem>A custom copy\u002Fpaste popup menu.\u003C\u002Fem>\n\u003Cimg src=\"https:\u002F\u002Fcontent.localazy.com\u002Fquicknote_8\u002Ffa3.png\" alt=\"Copy\u002Fpaste in Floating Apps\">\u003C\u002Fp>\n\u003Ch2 id=\"permissions\" id=\"permissions\">Permissions \u003Ca class=\"markdownit-header-anchor\" href=\"#permissions\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Problem:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Obtaining permissions from Android M and above requires a dialog to be shown and the method for issuing the request is available in \u003Ccode>Activity\u003C\u002Fcode> as well as the mechanism for catching the result.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>In fact, there are two possible solutions to this problem.\u003C\u002Fp>\n\u003Col>\n\u003Cli>You can ask the user to grant all the necessary permissions in the main app before you allow her to access floating windows. Honestly, this solution may scare your users, and as Floating Apps has around 8 required permissions, I believe that almost nobody would grant them all before any real experience with the app.\u003C\u002Fli>\n\u003Cli>Ask the user for the required permission when you need it. This is the correct way how to do it. In this case, the best you can do is to show an invisible activity and raise the permission request dialog from it. It may interrupt the current task, but as this is an only one-time action, it’s not a big deal, and there is no better way to do.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>In Floating Apps, every single mini-app defines a set of required permissions, and before the app is launched, the service checks whether all permissions are granted. If not, an invisible activity is shown and ask the user to grant missing ones.\u003C\u002Fp>\n\u003Ch2 id=\"system-interactions\" id=\"system-interactions\">System Interactions \u003Ca class=\"markdownit-header-anchor\" href=\"#system-interactions\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Problem:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Some things, such as social logins, requesting SD card access, opening with, sharing, etc., can only be invoked from running activity.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>I tend to move “configuration” level things to the main app, which is a normal Android app, and once configured, it’s usually possible to use them from inside the service.\u003C\u002Fp>\n\u003Cp>For \u003Ccode>Open With\u003C\u002Fcode> \u002F \u003Ccode>Share With\u003C\u002Fcode> functionality, a hidden activity is a solution both for showing the dialog to open\u002Fshare with and for receiving data from other apps.\u003C\u002Fp>\n\u003Cp>However, you may need to sacrifice functionality that is not supported in the service. For example, I once wanted to implement floating navigation with MapBox, but their SDK expects  an instance of Activity to be available. No luck.\u003C\u002Fp>\n\u003Ch2 id=\"z-order\" id=\"z-order\">Z-Order \u003Ca class=\"markdownit-header-anchor\" href=\"#z-order\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Problem:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The most recently added \u003Ccode>View\u003C\u002Fcode> is rendered on top of all others. There is no mechanism for switching the z-order of \u003Ccode>View\u003C\u002Fcode>s in \u003Ccode>WindowManager\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>In Floating Apps, the switching of floating windows is a complex process.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The whole window is rendered to an image, and a new \u003Ccode>ImageView\u003C\u002Fcode> is injected to \u003Ccode>WindowManager\u003C\u002Fcode> with the image of the original window on exactly the same position. In fact, it looks exactly the same as the original window.\u003C\u002Fli>\n\u003Cli>The original window is removed from the \u003Ccode>WindowManager\u003C\u002Fcode> but kept alive.\u003C\u002Fli>\n\u003Cli>The original window is added back to the \u003Ccode>WindowManager\u003C\u002Fcode>, which means that it’s effectively brought to the top.\u003C\u002Fli>\n\u003Cli>The \u003Ccode>ImageView\u003C\u002Fcode> with the rendered image of the window is removed from the \u003Ccode>WindowManager\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Using the approach above, switching windows seems like a seamless process without blinking and other undesired effects.\u003C\u002Fp>\n\u003Cp>Of course, in Floating Apps, this is automated, and there is a complex logic around this that also controls the current z-order of all windows and intelligently decides when the switching is necessary and when not.\u003C\u002Fp>\n\u003Cp>However, removing and re-adding the window may cause a problem with components rendering content directly to the video memory such as \u003Ccode>SurfaceView\u003C\u002Fcode>, \u003Ccode>VideoView\u003C\u002Fcode>, etc. For this reason, Floating Apps automatically disable this process for windows of a certain type.\u003C\u002Fp>\n\u003Ch2 id=\"browser-limitations\" id=\"browser-limitations\">Browser Limitations \u003Ca class=\"markdownit-header-anchor\" href=\"#browser-limitations\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ccode>WebView\u003C\u002Fcode> works well in floating windows, and it’s mostly possible to reimplement its interactions such as uploading and downloading files, invalid certificate notifications, requests for location permission, etc. to use floating windows\u002Fdialogs described above.\u003C\u002Fp>\n\u003Cp>However, there are a few actions that may lead to crashes or are unsupported. I hope I listed all the key issues.\u003C\u002Fp>\n\u003Ch3 id=\"open-with\" id=\"open-with\">Open With \u003Ca class=\"markdownit-header-anchor\" href=\"#open-with\">🔗\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Android tries to offer available apps, aka  \u003Ccode>Open With\u003C\u002Fcode> feature, when opening links with an unknown protocol. As there is no activity, it may cause crashes. However, this behavior can be easily overridden.\u003C\u002Fp>\n\u003Ch3 id=\"copypaste\" id=\"copypaste\">Copy\u002FPaste \u003Ca class=\"markdownit-header-anchor\" href=\"#copypaste\">🔗\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The problem with copy\u002Fpaste described above also exists for \u003Ccode>WebView\u003C\u002Fcode>, and it’s even worse.\u003C\u002Fp>\n\u003Cp>It’s possible to use \u003Ccode>WebView\u003C\u002Fcode> to implement a workaround for unsupported text selection because we have full control over the code. However, for other websites, the situation is much complicated.\u003C\u002Fp>\n\u003Cp>However, it’s possible to get the selected text in the \u003Ccode>WebView\u003C\u002Fcode> using something like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-kotlin\">webView.loadUrl(&quot;javascript:process(window.getSelection().toString());&quot;)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>And paste the text to \u003Ccode>WebView\u003C\u002Fcode> using simulating key strokes with \u003Ccode>dispatchKeyEvent\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3 id=\"long-click-on-links-and-images\" id=\"long-click-on-links-images\">Long-Click On Links &amp; Images \u003Ca class=\"markdownit-header-anchor\" href=\"#long-click-on-links-and-images\">🔗\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Long-clicks may lead to crashes depending on the implementation, and certainly, it’s not possible to invoke standard actions like \u003Ccode>Open In New Window\u003C\u002Fcode>, \u003Ccode>Download Image\u003C\u002Fcode>, etc.\u003C\u002Fp>\n\u003Cp>The solution is to set custom \u003Ccode>OnLongClickListener\u003C\u002Fcode> for the \u003Ccode>WebView\u003C\u002Fcode> and get use \u003Ccode>webView.getHitTestResult()\u003C\u002Fcode> to get information about the clicked element.\u003C\u002Fp>\n\u003Cp>Don’t forget to \u003Ccode>return false\u003C\u002Fcode> when \u003Ccode>webView.getHitTestResult()\u003C\u002Fcode> returns \u003Ccode>null\u003C\u002Fcode> to let the \u003Ccode>WebView\u003C\u002Fcode> process the long click correctly, e.g. for selecting texts.\u003C\u002Fp>\n\u003Ch3 id=\"html-lessselectgreater\" id=\"html-select\">HTML  &lt;select&gt; \u003Ca class=\"markdownit-header-anchor\" href=\"#html-lessselectgreater\">🔗\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>HTML element \u003Ccode>&lt;select&gt;\u003C\u002Fcode> shows a dialog with available options and cause your app to crash. It’s a big deal, and the only solution is to hook the element, override its action, and show custom UI based on floating technology.\u003C\u002Fp>\n\u003Cp>It’s not a simple task and needs a lot of testing. Don’t forget that options in \u003Ccode>&lt;select&gt;\u003C\u002Fcode> may be nested and disabled.\u003C\u002Fp>\n\u003Ch2 id=\"the-final-note\" id=\"the-final-note\">The Final Note \u003Ca class=\"markdownit-header-anchor\" href=\"#the-final-note\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>You learned how to implement floating windows for your app. It’s a powerful technology, but it comes with its price.\u003C\u002Fp>\n\u003Cp>Use it wisely where it makes sense and try to avoid situations in which you get to shortcomings mentioned in this article and some others I forgot. It’s not a simple task to correctly implement all the workarounds to be reliable across different phones and Android versions.\u003C\u002Fp>\n\u003Cp>Enjoy it and feel free to share your apps with me.\u003C\u002Fp>\n\u003Cp>Also, I will be glad if you decide to localize your apps with \u003Ca href=\"https:\u002F\u002Flocalazy.com\">Localazy\u003C\u002Fa>. I put the very same love into it as I did with Floating Apps.\u003C\u002Fp>\n\u003Cp>Continue to \u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-10-tips-and-tricks\">the last article with tips &amp; tricks\u003C\u002Fa> I learned the hard way.\u003C\u002Fp>\n\u003Ch2 id=\"stay-tuned\" id=\"stay-tuned\">Stay Tuned \u003Ca class=\"markdownit-header-anchor\" href=\"#stay-tuned\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Eager to learn more about Android development? Follow me (\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fvaclavhodek\">@vaclavhodek\u003C\u002Fa>) and Localazy (\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Flocalazy\">@localazy\u003C\u002Fa>) on Twitter, or like \u003Ca href=\"https:\u002F\u002Fwww.facebook.com\u002Flocalazy\">Localazy on Facebook\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"the-series\" id=\"the-series\">The Series \u003Ca class=\"markdownit-header-anchor\" href=\"#the-series\">🔗\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>This article is part of the \u003Cstrong>Floating Windows on Android\u003C\u002Fstrong> series.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-1-jetpack-compose-and-room\">Floating Windows on Android 1: Jetpack Compose &amp; Room\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-2-foreground-service\">Floating Windows on Android 2: Foreground Service\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-3-permissions\">Floating Windows on Android 3: Permissions\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-4-floating-window\">Floating Windows on Android 4: Floating Window\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-5-moving-window\">Floating Windows on Android 5: Moving Window\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-6-keyboard-input\">Floating Windows on Android 6: Keyboard Input\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-7-boot-receiver\">Floating Windows on Android 7: Boot Receiver\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-8-the-final-app\">Floating Windows on Android 8: The Final App\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-9-shortcomings\">Floating Windows on Android 9: Shortcomings\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flocalazy.com\u002Fblog\u002Ffloating-windows-on-android-10-tips-and-tricks\">Floating Windows on Android 10: Tips &amp; Tricks\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C!--kg-card-end: html-->","Floating Windows on Android: Shortcomings",{"id":63,"status":45,"created_on":981,"modified_on":982,"icon":983,"header":984,"description":985,"button_label":986,"link":987},"2022-03-17T12:23:03.000Z","2026-08-06T13:02:00.000Z","app","Integrate with anything using Localazy CLI ","Developers love our CLI! Localize your product using the most advanced command-line interface for i18n, l10n, and translation management. ","Try it now","features\u002Fcli\u002F",{"slug":966,"id":963,"uuid":989,"title":965,"html":978,"comment_id":990,"feature_image":968,"featured":263,"visibility":991,"email_recipient_filter":992,"created_at":967,"updated_at":967,"published_at":967,"custom_excerpt":977,"codeinjection_head":50,"codeinjection_foot":50,"custom_template":990,"canonical_url":50,"tags":993,"authors":1005,"primary_author":1012,"primary_tag":1013,"url":1014,"excerpt":977,"reading_time":83,"access":265,"send_email_when_published":263,"og_image":50,"og_title":50,"og_description":50,"twitter_image":50,"twitter_title":50,"twitter_description":50,"meta_title":979,"meta_description":977,"email_subject":50,"frontmatter":50,"dictionary":976,"cta":980,"plainTags":969},"4f35511d-5dc6-4a02-be64-7c97ce00811c","37","public","none",[994,999,1002],{"id":995,"name":996,"slug":997,"description":985,"feature_image":50,"visibility":991,"og_image":50,"og_title":50,"og_description":50,"twitter_image":50,"twitter_title":50,"twitter_description":50,"meta_title":50,"meta_description":50,"codeinjection_head":50,"codeinjection_foot":50,"canonical_url":50,"accent_color":50,"url":998},"60a37fc7cf7b6a0001d1f111","[CTA] Integrate with anything using Localazy CLI ","cta-3","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcta-3\u002F",{"id":1000,"name":971,"slug":972,"description":971,"feature_image":50,"visibility":991,"og_image":50,"og_title":50,"og_description":50,"twitter_image":50,"twitter_title":50,"twitter_description":50,"meta_title":50,"meta_description":50,"codeinjection_head":50,"codeinjection_foot":50,"canonical_url":50,"accent_color":50,"url":1001},"60a37fc7cf7b6a0001d1f0ef","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Fcourse\u002F",{"id":1003,"name":974,"slug":975,"description":974,"feature_image":50,"visibility":991,"og_image":50,"og_title":50,"og_description":50,"twitter_image":50,"twitter_title":50,"twitter_description":50,"meta_title":50,"meta_description":50,"codeinjection_head":50,"codeinjection_foot":50,"canonical_url":50,"accent_color":50,"url":1004},"60a37fc7cf7b6a0001d1f0f0","https:\u002F\u002Fghost.localazy.com\u002Ftag\u002Ffloating-windows\u002F",[1006],{"id":944,"name":945,"slug":946,"profile_image":947,"cover_image":50,"bio":1007,"website":1008,"location":1009,"facebook":50,"twitter":1010,"meta_title":50,"meta_description":50,"url":1011},"Entrepreneur, idea maker, developer, SaaS & mobile enthusiast. Building a localization solution for developers at Localazy.","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fvaclavhodek\u002F","Slavkov u Brna, Czech Republic","@vaclavhodek","https:\u002F\u002Fghost.localazy.com\u002Fauthor\u002Fvaclav-hodek\u002F",{"id":944,"name":945,"slug":946,"profile_image":947,"cover_image":50,"bio":1007,"website":1008,"location":1009,"facebook":50,"twitter":1010,"meta_title":50,"meta_description":50,"url":1011},{"id":995,"name":996,"slug":997,"description":985,"feature_image":50,"visibility":991,"og_image":50,"og_title":50,"og_description":50,"twitter_image":50,"twitter_title":50,"twitter_description":50,"meta_title":50,"meta_description":50,"codeinjection_head":50,"codeinjection_foot":50,"canonical_url":50,"accent_color":50,"url":998},"https:\u002F\u002Fghost.localazy.com\u002Ffloating-windows-on-android-9-shortcomings\u002F",[1016,1027,1038],{"id":1017,"owner":1018,"created_by":50,"sort":50,"title":1019,"slug":1020,"modified_on":230,"created_on":1021,"pinned":263,"badge":50,"priority":928,"main_image":1022,"status":45,"tags":1023,"dictionary":1026,"reading_time":940,"excerpt":-1,"og_title":230,"og_description":230,"og_image":230},"60a37fc7cf7b6a0001d1f19c",{"id":944,"first_name":945,"last_name":230,"slug":946,"avatar":947},"#10 Floating Windows on Android: Tips & Tricks","floating-windows-on-android-10-tips-and-tricks","2020-09-21T16:34:53.000+02:00","https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002Faf3c3a19-d627-4b47-bb8e-b306dab97bd7",[1024,1025],{"id":41,"created_on":932,"status":45,"label":971,"slug":972,"on_index_page":263},{"id":41,"created_on":932,"status":45,"label":974,"slug":975,"on_index_page":263},[],{"id":1028,"owner":1029,"created_by":50,"sort":50,"title":1030,"slug":1031,"modified_on":230,"created_on":1032,"pinned":263,"badge":50,"priority":928,"main_image":1033,"status":45,"tags":1034,"dictionary":1037,"reading_time":940,"excerpt":-1,"og_title":230,"og_description":230,"og_image":230},"60a37fc7cf7b6a0001d1f19b",{"id":944,"first_name":945,"last_name":230,"slug":946,"avatar":947},"#8 Floating Windows on Android: The Final App","floating-windows-on-android-8-the-final-app","2020-09-21T16:33:37.000+02:00","https:\u002F\u002Fdirectus9.localazy.com\u002Fassets\u002F8b54b52a-8bbc-4f80-a8c2-be0cb40351f5",[1035,1036],{"id":41,"created_on":932,"status":45,"label":971,"slug":972,"on_index_page":263},{"id":41,"created_on":932,"status":45,"label":974,"slug":975,"on_index_page":263},[],{"id":963,"owner":1039,"created_by":50,"sort":50,"title":965,"slug":966,"modified_on":230,"created_on":967,"pinned":263,"badge":50,"priority":928,"main_image":968,"status":45,"tags":1040,"dictionary":1043,"reading_time":940,"excerpt":-1,"og_title":230,"og_description":230,"og_image":230},{"id":944,"first_name":945,"last_name":230,"slug":946,"avatar":947},[1041,1042],{"id":41,"created_on":932,"status":45,"label":971,"slug":972,"on_index_page":263},{"id":41,"created_on":932,"status":45,"label":974,"slug":975,"on_index_page":263},[],{"id":13,"sort":50,"created_on":1045,"name":1046,"cta_link":1047,"banner_image":1048},"2022-03-17T12:23:14.000Z","default","https:\u002F\u002Flocalazy.com\u002Ffeatures\u002Flocalazy-ai",{"id":1049},"72defd59-a21d-44b9-822c-4e183ca62b99"]