Detect web app running as homescreen app on Android Stock Browser












4















We are building a web app that has to be used as a standalone / homescreen app. In Chrome and Safari we can detect if it is viewed from the browser or from native-like browser container with either window.navigator.standalone or window.matchMedia('(display-mode: standalone)'). Neither option seems to work with the default Android stock browser/Samsung Internet. Furthermore, we are also not able to use start_url in manifest.json, because we need to pass a token to the homescreen app that is unique per user.



Is it possible to detect if the app is opened from the homescreen when it was added using the android stock browser?



Related





  • Check if web app is added to home screen on Android (works only with chrome on android)


  • Detect if page is viewed in samsung stock browser or as a standalone web app (unanswered)

  • Bug report: Does not detect the display-mode style










share|improve this question

























  • Hmmm.... does Samsung Internet even support your manifest.json? Unless you're specifically targeting Samsung phones, I'd hope most of them would either have Chrome or Firefox installed -- otherwise, it doesn't look like there's much you can do here. Can you expand on your start_url hangup? Why can't you generate a manifest with user_token=xxx&pwa=true, and then parse that out with JavaScript?

    – Sheng Slogar
    Nov 19 '18 at 16:33











  • The user receives an email with a link containing the user token. That means the user token is only known at the client side at that time. Technically I could use php at the server end to get the user token out of the query string and return it in a custom manifest.json when the client requests it - or maybe even more aweful, set a cookie that is then sent back with the manifest.json call. Neither option is great - or very reliable I think. Currently manifest.json is identical for all users.

    – Sumurai8
    Nov 19 '18 at 16:52











  • Probably your best bet, only include your manifest once a user is logged in and include that in your start_url, assuming the token is permanent since you wouldn't be able to launch your installed web app from an email link.

    – Sheng Slogar
    Nov 19 '18 at 16:58











  • Anything supporting your manifest should support matchMedia though.... So I'm guessing Samsung/native Android web is just creating a bookmark-style shortcut? Obviously not an expert here, hopefully someone more experienced can add to this.

    – Sheng Slogar
    Nov 19 '18 at 17:01













  • Interestingly enough it is not a bookmark as it would have the address bar if it was. There is a bug with the display-mode setting of the browser which is causing the issue we are having, but other than that I have not found much else yet.

    – Sumurai8
    Nov 19 '18 at 19:23
















4















We are building a web app that has to be used as a standalone / homescreen app. In Chrome and Safari we can detect if it is viewed from the browser or from native-like browser container with either window.navigator.standalone or window.matchMedia('(display-mode: standalone)'). Neither option seems to work with the default Android stock browser/Samsung Internet. Furthermore, we are also not able to use start_url in manifest.json, because we need to pass a token to the homescreen app that is unique per user.



Is it possible to detect if the app is opened from the homescreen when it was added using the android stock browser?



Related





  • Check if web app is added to home screen on Android (works only with chrome on android)


  • Detect if page is viewed in samsung stock browser or as a standalone web app (unanswered)

  • Bug report: Does not detect the display-mode style










share|improve this question

























  • Hmmm.... does Samsung Internet even support your manifest.json? Unless you're specifically targeting Samsung phones, I'd hope most of them would either have Chrome or Firefox installed -- otherwise, it doesn't look like there's much you can do here. Can you expand on your start_url hangup? Why can't you generate a manifest with user_token=xxx&pwa=true, and then parse that out with JavaScript?

    – Sheng Slogar
    Nov 19 '18 at 16:33











  • The user receives an email with a link containing the user token. That means the user token is only known at the client side at that time. Technically I could use php at the server end to get the user token out of the query string and return it in a custom manifest.json when the client requests it - or maybe even more aweful, set a cookie that is then sent back with the manifest.json call. Neither option is great - or very reliable I think. Currently manifest.json is identical for all users.

    – Sumurai8
    Nov 19 '18 at 16:52











  • Probably your best bet, only include your manifest once a user is logged in and include that in your start_url, assuming the token is permanent since you wouldn't be able to launch your installed web app from an email link.

    – Sheng Slogar
    Nov 19 '18 at 16:58











  • Anything supporting your manifest should support matchMedia though.... So I'm guessing Samsung/native Android web is just creating a bookmark-style shortcut? Obviously not an expert here, hopefully someone more experienced can add to this.

    – Sheng Slogar
    Nov 19 '18 at 17:01













  • Interestingly enough it is not a bookmark as it would have the address bar if it was. There is a bug with the display-mode setting of the browser which is causing the issue we are having, but other than that I have not found much else yet.

    – Sumurai8
    Nov 19 '18 at 19:23














4












4








4


1






We are building a web app that has to be used as a standalone / homescreen app. In Chrome and Safari we can detect if it is viewed from the browser or from native-like browser container with either window.navigator.standalone or window.matchMedia('(display-mode: standalone)'). Neither option seems to work with the default Android stock browser/Samsung Internet. Furthermore, we are also not able to use start_url in manifest.json, because we need to pass a token to the homescreen app that is unique per user.



Is it possible to detect if the app is opened from the homescreen when it was added using the android stock browser?



Related





  • Check if web app is added to home screen on Android (works only with chrome on android)


  • Detect if page is viewed in samsung stock browser or as a standalone web app (unanswered)

  • Bug report: Does not detect the display-mode style










share|improve this question
















We are building a web app that has to be used as a standalone / homescreen app. In Chrome and Safari we can detect if it is viewed from the browser or from native-like browser container with either window.navigator.standalone or window.matchMedia('(display-mode: standalone)'). Neither option seems to work with the default Android stock browser/Samsung Internet. Furthermore, we are also not able to use start_url in manifest.json, because we need to pass a token to the homescreen app that is unique per user.



Is it possible to detect if the app is opened from the homescreen when it was added using the android stock browser?



Related





  • Check if web app is added to home screen on Android (works only with chrome on android)


  • Detect if page is viewed in samsung stock browser or as a standalone web app (unanswered)

  • Bug report: Does not detect the display-mode style







javascript android android-browser






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 '18 at 19:01







Sumurai8

















asked Nov 19 '18 at 16:07









Sumurai8Sumurai8

13k83261




13k83261













  • Hmmm.... does Samsung Internet even support your manifest.json? Unless you're specifically targeting Samsung phones, I'd hope most of them would either have Chrome or Firefox installed -- otherwise, it doesn't look like there's much you can do here. Can you expand on your start_url hangup? Why can't you generate a manifest with user_token=xxx&pwa=true, and then parse that out with JavaScript?

    – Sheng Slogar
    Nov 19 '18 at 16:33











  • The user receives an email with a link containing the user token. That means the user token is only known at the client side at that time. Technically I could use php at the server end to get the user token out of the query string and return it in a custom manifest.json when the client requests it - or maybe even more aweful, set a cookie that is then sent back with the manifest.json call. Neither option is great - or very reliable I think. Currently manifest.json is identical for all users.

    – Sumurai8
    Nov 19 '18 at 16:52











  • Probably your best bet, only include your manifest once a user is logged in and include that in your start_url, assuming the token is permanent since you wouldn't be able to launch your installed web app from an email link.

    – Sheng Slogar
    Nov 19 '18 at 16:58











  • Anything supporting your manifest should support matchMedia though.... So I'm guessing Samsung/native Android web is just creating a bookmark-style shortcut? Obviously not an expert here, hopefully someone more experienced can add to this.

    – Sheng Slogar
    Nov 19 '18 at 17:01













  • Interestingly enough it is not a bookmark as it would have the address bar if it was. There is a bug with the display-mode setting of the browser which is causing the issue we are having, but other than that I have not found much else yet.

    – Sumurai8
    Nov 19 '18 at 19:23



















  • Hmmm.... does Samsung Internet even support your manifest.json? Unless you're specifically targeting Samsung phones, I'd hope most of them would either have Chrome or Firefox installed -- otherwise, it doesn't look like there's much you can do here. Can you expand on your start_url hangup? Why can't you generate a manifest with user_token=xxx&pwa=true, and then parse that out with JavaScript?

    – Sheng Slogar
    Nov 19 '18 at 16:33











  • The user receives an email with a link containing the user token. That means the user token is only known at the client side at that time. Technically I could use php at the server end to get the user token out of the query string and return it in a custom manifest.json when the client requests it - or maybe even more aweful, set a cookie that is then sent back with the manifest.json call. Neither option is great - or very reliable I think. Currently manifest.json is identical for all users.

    – Sumurai8
    Nov 19 '18 at 16:52











  • Probably your best bet, only include your manifest once a user is logged in and include that in your start_url, assuming the token is permanent since you wouldn't be able to launch your installed web app from an email link.

    – Sheng Slogar
    Nov 19 '18 at 16:58











  • Anything supporting your manifest should support matchMedia though.... So I'm guessing Samsung/native Android web is just creating a bookmark-style shortcut? Obviously not an expert here, hopefully someone more experienced can add to this.

    – Sheng Slogar
    Nov 19 '18 at 17:01













  • Interestingly enough it is not a bookmark as it would have the address bar if it was. There is a bug with the display-mode setting of the browser which is causing the issue we are having, but other than that I have not found much else yet.

    – Sumurai8
    Nov 19 '18 at 19:23

















Hmmm.... does Samsung Internet even support your manifest.json? Unless you're specifically targeting Samsung phones, I'd hope most of them would either have Chrome or Firefox installed -- otherwise, it doesn't look like there's much you can do here. Can you expand on your start_url hangup? Why can't you generate a manifest with user_token=xxx&pwa=true, and then parse that out with JavaScript?

– Sheng Slogar
Nov 19 '18 at 16:33





Hmmm.... does Samsung Internet even support your manifest.json? Unless you're specifically targeting Samsung phones, I'd hope most of them would either have Chrome or Firefox installed -- otherwise, it doesn't look like there's much you can do here. Can you expand on your start_url hangup? Why can't you generate a manifest with user_token=xxx&pwa=true, and then parse that out with JavaScript?

– Sheng Slogar
Nov 19 '18 at 16:33













The user receives an email with a link containing the user token. That means the user token is only known at the client side at that time. Technically I could use php at the server end to get the user token out of the query string and return it in a custom manifest.json when the client requests it - or maybe even more aweful, set a cookie that is then sent back with the manifest.json call. Neither option is great - or very reliable I think. Currently manifest.json is identical for all users.

– Sumurai8
Nov 19 '18 at 16:52





The user receives an email with a link containing the user token. That means the user token is only known at the client side at that time. Technically I could use php at the server end to get the user token out of the query string and return it in a custom manifest.json when the client requests it - or maybe even more aweful, set a cookie that is then sent back with the manifest.json call. Neither option is great - or very reliable I think. Currently manifest.json is identical for all users.

– Sumurai8
Nov 19 '18 at 16:52













Probably your best bet, only include your manifest once a user is logged in and include that in your start_url, assuming the token is permanent since you wouldn't be able to launch your installed web app from an email link.

– Sheng Slogar
Nov 19 '18 at 16:58





Probably your best bet, only include your manifest once a user is logged in and include that in your start_url, assuming the token is permanent since you wouldn't be able to launch your installed web app from an email link.

– Sheng Slogar
Nov 19 '18 at 16:58













Anything supporting your manifest should support matchMedia though.... So I'm guessing Samsung/native Android web is just creating a bookmark-style shortcut? Obviously not an expert here, hopefully someone more experienced can add to this.

– Sheng Slogar
Nov 19 '18 at 17:01







Anything supporting your manifest should support matchMedia though.... So I'm guessing Samsung/native Android web is just creating a bookmark-style shortcut? Obviously not an expert here, hopefully someone more experienced can add to this.

– Sheng Slogar
Nov 19 '18 at 17:01















Interestingly enough it is not a bookmark as it would have the address bar if it was. There is a bug with the display-mode setting of the browser which is causing the issue we are having, but other than that I have not found much else yet.

– Sumurai8
Nov 19 '18 at 19:23





Interestingly enough it is not a bookmark as it would have the address bar if it was. There is a bug with the display-mode setting of the browser which is causing the issue we are having, but other than that I have not found much else yet.

– Sumurai8
Nov 19 '18 at 19:23












1 Answer
1






active

oldest

votes


















0














As far as I can tell, there is no way to directly detect if an app is running in the Samsung Browser, or as a standalone app in the Samsung Browser. The only difference I was able to find is the window.innerHeight, as this does not include the address bar. With window.screen.height one would be able to potentially calculate a ratio. Since this browser can be used across many different devices, this does not necessarily help you. window.innerHeight should be bigger for standalone apps, but you do not necessarily know how big a standalone app is compared to a browser experience.



// Imperfect solution
if ((window.innerHeight / window.screen.height) > 0.9) {
// Some probability of this being a standalone app.
}




A different solution I found was to set the manifest file via javascript, allowing us to set the unique token in the start url for each individual user. This approach has several downsides though. Setting a manifest file through javascript is technically unsupported and when you create a manifest file this way, your app will never be installed as a web apk. Firefox does not support dynamically generated manifest files at all, while ios caches the manifest file which may cause issues on its own. The Chrome devtools will not always display what is in your manifest file either. The following is partly from this medium article.



// This approach has many caveats. Be aware of all of them before using this solution
import manifestBase from '../manifest.json';

const myToken = window.localStorage.getItem('myToken');
const manifest = { ...manifestBase };
manifest.start_url = `${window.location.origin}?standalone=true&myToken=${myToken}`;
const stringManifest = JSON.stringify(manifest);
const blob = new Blob([stringManifest], {type: 'application/json'});
const manifestURL = URL.createObjectURL(blob);
document.querySelector('meta[rel=manifest]').setAttribute('href', manifestURL);


You can get around the problem with FireFox by setting the href attribute of your manifest meta tag to a sensible default. You cannot get around the problem in ios if your unique information changes often.. or even at all. If your start url is not dynamic, do not set the manifest file through javascript at all, but instead set the start url with some information (e.g. the standalone=true query string above) that allows you to distinguish a standalone app from a browser url.





One more thing I found is that setting the browser mode to anything else, such as fullscreen does not "fix" the bug with Samsung Browser. It will never set the display mode to anything but a browser, so one is not able to detect it that way either.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53378576%2fdetect-web-app-running-as-homescreen-app-on-android-stock-browser%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    As far as I can tell, there is no way to directly detect if an app is running in the Samsung Browser, or as a standalone app in the Samsung Browser. The only difference I was able to find is the window.innerHeight, as this does not include the address bar. With window.screen.height one would be able to potentially calculate a ratio. Since this browser can be used across many different devices, this does not necessarily help you. window.innerHeight should be bigger for standalone apps, but you do not necessarily know how big a standalone app is compared to a browser experience.



    // Imperfect solution
    if ((window.innerHeight / window.screen.height) > 0.9) {
    // Some probability of this being a standalone app.
    }




    A different solution I found was to set the manifest file via javascript, allowing us to set the unique token in the start url for each individual user. This approach has several downsides though. Setting a manifest file through javascript is technically unsupported and when you create a manifest file this way, your app will never be installed as a web apk. Firefox does not support dynamically generated manifest files at all, while ios caches the manifest file which may cause issues on its own. The Chrome devtools will not always display what is in your manifest file either. The following is partly from this medium article.



    // This approach has many caveats. Be aware of all of them before using this solution
    import manifestBase from '../manifest.json';

    const myToken = window.localStorage.getItem('myToken');
    const manifest = { ...manifestBase };
    manifest.start_url = `${window.location.origin}?standalone=true&myToken=${myToken}`;
    const stringManifest = JSON.stringify(manifest);
    const blob = new Blob([stringManifest], {type: 'application/json'});
    const manifestURL = URL.createObjectURL(blob);
    document.querySelector('meta[rel=manifest]').setAttribute('href', manifestURL);


    You can get around the problem with FireFox by setting the href attribute of your manifest meta tag to a sensible default. You cannot get around the problem in ios if your unique information changes often.. or even at all. If your start url is not dynamic, do not set the manifest file through javascript at all, but instead set the start url with some information (e.g. the standalone=true query string above) that allows you to distinguish a standalone app from a browser url.





    One more thing I found is that setting the browser mode to anything else, such as fullscreen does not "fix" the bug with Samsung Browser. It will never set the display mode to anything but a browser, so one is not able to detect it that way either.






    share|improve this answer




























      0














      As far as I can tell, there is no way to directly detect if an app is running in the Samsung Browser, or as a standalone app in the Samsung Browser. The only difference I was able to find is the window.innerHeight, as this does not include the address bar. With window.screen.height one would be able to potentially calculate a ratio. Since this browser can be used across many different devices, this does not necessarily help you. window.innerHeight should be bigger for standalone apps, but you do not necessarily know how big a standalone app is compared to a browser experience.



      // Imperfect solution
      if ((window.innerHeight / window.screen.height) > 0.9) {
      // Some probability of this being a standalone app.
      }




      A different solution I found was to set the manifest file via javascript, allowing us to set the unique token in the start url for each individual user. This approach has several downsides though. Setting a manifest file through javascript is technically unsupported and when you create a manifest file this way, your app will never be installed as a web apk. Firefox does not support dynamically generated manifest files at all, while ios caches the manifest file which may cause issues on its own. The Chrome devtools will not always display what is in your manifest file either. The following is partly from this medium article.



      // This approach has many caveats. Be aware of all of them before using this solution
      import manifestBase from '../manifest.json';

      const myToken = window.localStorage.getItem('myToken');
      const manifest = { ...manifestBase };
      manifest.start_url = `${window.location.origin}?standalone=true&myToken=${myToken}`;
      const stringManifest = JSON.stringify(manifest);
      const blob = new Blob([stringManifest], {type: 'application/json'});
      const manifestURL = URL.createObjectURL(blob);
      document.querySelector('meta[rel=manifest]').setAttribute('href', manifestURL);


      You can get around the problem with FireFox by setting the href attribute of your manifest meta tag to a sensible default. You cannot get around the problem in ios if your unique information changes often.. or even at all. If your start url is not dynamic, do not set the manifest file through javascript at all, but instead set the start url with some information (e.g. the standalone=true query string above) that allows you to distinguish a standalone app from a browser url.





      One more thing I found is that setting the browser mode to anything else, such as fullscreen does not "fix" the bug with Samsung Browser. It will never set the display mode to anything but a browser, so one is not able to detect it that way either.






      share|improve this answer


























        0












        0








        0







        As far as I can tell, there is no way to directly detect if an app is running in the Samsung Browser, or as a standalone app in the Samsung Browser. The only difference I was able to find is the window.innerHeight, as this does not include the address bar. With window.screen.height one would be able to potentially calculate a ratio. Since this browser can be used across many different devices, this does not necessarily help you. window.innerHeight should be bigger for standalone apps, but you do not necessarily know how big a standalone app is compared to a browser experience.



        // Imperfect solution
        if ((window.innerHeight / window.screen.height) > 0.9) {
        // Some probability of this being a standalone app.
        }




        A different solution I found was to set the manifest file via javascript, allowing us to set the unique token in the start url for each individual user. This approach has several downsides though. Setting a manifest file through javascript is technically unsupported and when you create a manifest file this way, your app will never be installed as a web apk. Firefox does not support dynamically generated manifest files at all, while ios caches the manifest file which may cause issues on its own. The Chrome devtools will not always display what is in your manifest file either. The following is partly from this medium article.



        // This approach has many caveats. Be aware of all of them before using this solution
        import manifestBase from '../manifest.json';

        const myToken = window.localStorage.getItem('myToken');
        const manifest = { ...manifestBase };
        manifest.start_url = `${window.location.origin}?standalone=true&myToken=${myToken}`;
        const stringManifest = JSON.stringify(manifest);
        const blob = new Blob([stringManifest], {type: 'application/json'});
        const manifestURL = URL.createObjectURL(blob);
        document.querySelector('meta[rel=manifest]').setAttribute('href', manifestURL);


        You can get around the problem with FireFox by setting the href attribute of your manifest meta tag to a sensible default. You cannot get around the problem in ios if your unique information changes often.. or even at all. If your start url is not dynamic, do not set the manifest file through javascript at all, but instead set the start url with some information (e.g. the standalone=true query string above) that allows you to distinguish a standalone app from a browser url.





        One more thing I found is that setting the browser mode to anything else, such as fullscreen does not "fix" the bug with Samsung Browser. It will never set the display mode to anything but a browser, so one is not able to detect it that way either.






        share|improve this answer













        As far as I can tell, there is no way to directly detect if an app is running in the Samsung Browser, or as a standalone app in the Samsung Browser. The only difference I was able to find is the window.innerHeight, as this does not include the address bar. With window.screen.height one would be able to potentially calculate a ratio. Since this browser can be used across many different devices, this does not necessarily help you. window.innerHeight should be bigger for standalone apps, but you do not necessarily know how big a standalone app is compared to a browser experience.



        // Imperfect solution
        if ((window.innerHeight / window.screen.height) > 0.9) {
        // Some probability of this being a standalone app.
        }




        A different solution I found was to set the manifest file via javascript, allowing us to set the unique token in the start url for each individual user. This approach has several downsides though. Setting a manifest file through javascript is technically unsupported and when you create a manifest file this way, your app will never be installed as a web apk. Firefox does not support dynamically generated manifest files at all, while ios caches the manifest file which may cause issues on its own. The Chrome devtools will not always display what is in your manifest file either. The following is partly from this medium article.



        // This approach has many caveats. Be aware of all of them before using this solution
        import manifestBase from '../manifest.json';

        const myToken = window.localStorage.getItem('myToken');
        const manifest = { ...manifestBase };
        manifest.start_url = `${window.location.origin}?standalone=true&myToken=${myToken}`;
        const stringManifest = JSON.stringify(manifest);
        const blob = new Blob([stringManifest], {type: 'application/json'});
        const manifestURL = URL.createObjectURL(blob);
        document.querySelector('meta[rel=manifest]').setAttribute('href', manifestURL);


        You can get around the problem with FireFox by setting the href attribute of your manifest meta tag to a sensible default. You cannot get around the problem in ios if your unique information changes often.. or even at all. If your start url is not dynamic, do not set the manifest file through javascript at all, but instead set the start url with some information (e.g. the standalone=true query string above) that allows you to distinguish a standalone app from a browser url.





        One more thing I found is that setting the browser mode to anything else, such as fullscreen does not "fix" the bug with Samsung Browser. It will never set the display mode to anything but a browser, so one is not able to detect it that way either.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 23 '18 at 17:45









        Sumurai8Sumurai8

        13k83261




        13k83261






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53378576%2fdetect-web-app-running-as-homescreen-app-on-android-stock-browser%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

            ComboBox Display Member on multiple fields

            Is it possible to collect Nectar points via Trainline?