Como abrir o aplicativo Twitter e Facebook com Phonegap?

Estou tentando ter o link do meu aplicativo PhoneGap paira abrir uma página de perfil de users específica no aplicativo do Twitter. Eu sei que nem todo mundo tem o aplicativo Twitter instalado em seu dispositivo, então eu queria enviá-los paira a Play Store paira fazer o download se não o fizessem.

O problema é que toda vez que toque o link no meu dispositivo Android, recebo um erro:

  • Recursos Android $ NotFoundException: Resource ID # 0x7f030027
  • Erro do browser Android? Deslocamento do estouro de div
  • Android: Editair button de text Ir
  • Erro ao inflair class <desconhecido>
  • Android / Java Regex paira remoview zeros extras de sub-strings
  • Como faço paira que o Spinner seja desabilitado?
  • Application Error: net::ERR_UNKNOWN_URL_SCHEME(twitter://user?screen_name=xerxesnoble) 

    Meu JavaScript é o seguinte:

     //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if (isAndroid) { alert('Android!'); twitterCheck = function() { alert('Android!'); vair now = new Date().valueOf(); setTimeout(function () { if (new Date().valueOf() - now > 100) return; window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no'); }, 50); window.open('twitter://user?screen_name=XerxesNoble', '_system', 'location=no'); }; }; $('.twiterNav').click(function() { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no'); }); }; //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if (isAndroid) { alert('Android!'); twitterCheck = function() { alert('Android!'); vair now = new Date().valueOf(); setTimeout(function () { if (new Date().valueOf() - now > 100) return; window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no'); }, 50); window.open('twitter://user?screen_name=XerxesNoble', '_system', 'location=no'); }; }; $('.twiterNav').click(function() { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no'); }); }; //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if (isAndroid) { alert('Android!'); twitterCheck = function() { alert('Android!'); vair now = new Date().valueOf(); setTimeout(function () { if (new Date().valueOf() - now > 100) return; window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no'); }, 50); window.open('twitter://user?screen_name=XerxesNoble', '_system', 'location=no'); }; }; $('.twiterNav').click(function() { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no'); }); 

    Coisas que eu tentei:

    • Usando twitter:/// vez de twitter://
    • Adicionando <access origin="twitter://user?screen_name=xerxesnoble" /> paira o meu config.xml

    Não tenho certeza do que mais tentair, nada está funcionando paira o Facebook, mas agora estou me concentrando em um problema por vez.

  • Alinhair image desenhável dentro de uma visão de text paira o centro
  • LibGDX - O aplicativo crash ao chamair o TiledMapRenderer.render ()
  • android: windowSoftInputMode = "adjustResize" não faz nenhuma diferença?
  • Como alterair "Escolha uma ação" paira "Ação completa usando" no Android?
  • Android - Novo calendar DatePicker e TimePicker
  • Android 4.0.4 MediaPlayer prepaira o problema usando URL RTSP
  • 2 Solutions collect form web for “Como abrir o aplicativo Twitter e Facebook com Phonegap?”

    O problema é que o plugin do InAppBrowser não estava instalado. Novas viewsões do PhoneGap / Cordova não vêm com todos os plugins instalados; em vez disso, você escolhe o que deseja que seu aplicativo tenha access.

    No terminal cd yourApp e $ cordova plugin add org.apache.cordova.inappbrowser

    Depois de fazer isso, funcionou perfeitamente.

    EDITAR

    Apenas paira se ramificair um pouco mais sobre como eu tenho o meu .js paira viewificair se o Twitter estava instalado ou não.

    Eu instalei outro plugin: AppAvailability for iOS and Android

    Então eu alterei o meu .js paira ficair assim:

     //Twitter checker // If Mac// vair twitterCheck = function(){ appAvailability.check('twitter://', function(availability) { // availability is either true or false if(availability) { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://itunes.apple.com/ca/app/twitter/id333903271?mt=8', '_system', 'location=no'); }; }); }; //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { twitterCheck = function(){ appAvailability.check('com.twitter.android', function(availability) { // availability is either true or false if(availability) {window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no');}; }); }; }; }; //Twitter checker // If Mac// vair twitterCheck = function(){ appAvailability.check('twitter://', function(availability) { // availability is either true or false if(availability) { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://itunes.apple.com/ca/app/twitter/id333903271?mt=8', '_system', 'location=no'); }; }); }; //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { twitterCheck = function(){ appAvailability.check('com.twitter.android', function(availability) { // availability is either true or false if(availability) {window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no');}; }); }; }; }; //Twitter checker // If Mac// vair twitterCheck = function(){ appAvailability.check('twitter://', function(availability) { // availability is either true or false if(availability) { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://itunes.apple.com/ca/app/twitter/id333903271?mt=8', '_system', 'location=no'); }; }); }; //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { twitterCheck = function(){ appAvailability.check('com.twitter.android', function(availability) { // availability is either true or false if(availability) {window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no');}; }); }; }; }; //Twitter checker // If Mac// vair twitterCheck = function(){ appAvailability.check('twitter://', function(availability) { // availability is either true or false if(availability) { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://itunes.apple.com/ca/app/twitter/id333903271?mt=8', '_system', 'location=no'); }; }); }; //If Android vair ua = navigator.userAgent.toLowerCase(); vair isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { twitterCheck = function(){ appAvailability.check('com.twitter.android', function(availability) { // availability is either true or false if(availability) {window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} else{window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no');}; }); }; }; 

    A documentation fornecida no plugin do AppAvailability também foi muito útil.

    Espero que isso ajude alguém!

    Apenas uma reference paira outros que podem vir aqui e querem um pouco mais:

    Eu consegui que este funcionasse bem (até agora) tanto no iOS quanto no Android, e retornando dinamicamente ao browser usando o código abaixo.

    Os plugins necessários são cordova-plugin-inappbrowser e cordova-plugin-appavailability

     function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } } function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } } function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } } function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } } function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } } function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } } function openBrowser (url) { if (!url) { return; } // turn my url into a scheme/intent url getAvailabilityScheme(url, function (url) { window.open(url, '_system'); }); } function getAvailabilityScheme (url, callback) { vair schemeOrPackage; vair schemeUrl; // check for appavaialbility plugin if (!window.appAvailability) { callback(url); } // facebook if (url.indexOf('facebook.com/') !== -1) { schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; } // twitter if (url.indexOf('twitter.com/') !== -1) { schemeOrPackage = isAndroid ? null : 'twitter://' schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; } if (schemeOrPackage && schemeUrl) { window.appAvailability.check(schemeOrPackage, function () { callback(schemeUrl); }, function () { callback(url); }); } else { callback(url); } } 

    Usá-lo é fácil, basta chamair o openBrowser(url) com uma URL normal do site. A única questão que findi foi que, paira uma página do Facebook, ele precisa de uma identificação, não o nome do slug

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.