2014-09-24 14 views
10

Sto tentando di impostare un modo per ricevere un url da un'altra app. Ad esempio, sei nel browser, fai clic su condividi e invia il link a un'altra app (la mia app). Ho trovato this cordova plugin e l'ho integrato nella mia app, ma continuo a non mostrare alcun URL quando lo provo.Ricevi URL in Ionic/Cordova

ottengo un avviso che dice:

getUri url:null

Qualsiasi aiuto sarebbe grande. Felice di aggiungere altro codice se utile.

app.js:

'use strict'; 

// angular.module is a global place for creating, registering and retrieving Angular modules 
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html) 
// the 2nd parameter is an array of 'requires' 
angular.module('starter', [ 
    'ionic', 
    'firebase', 
    'starter.services', 
    'starter.directives', 
    'starter.controllers', 
    'ngSanitize' 
]) 
.run(function($rootScope, $state, $ionicPlatform, Post) { 
    $ionicPlatform.ready(function() { 
    // Hide the accessory bar by default (remove this to show the accessory 
    // bar above the keyboard for form inputs) 
    if (window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 

    if (window.StatusBar) { 
     // org.apache.cordova.statusbar required 
     StatusBar.styleDefault(); 
    } 

Questa è la webintent:

if (window.plugins && window.plugins.webintent) { 
     window.plugins.webintent.getUri(function(url) { 
     alert("getUri url:"+url); 
     }); 
    } 

    $rootScope.$on('$stateChangeError', function(event, toState, toParams, 
               fromState, fromParams, error) { 
     $state.go(error); 
    }); 
    }); 
}) 
angular.module('starter.services', []); 
angular.module('starter.directives', []); 
angular.module('starter.controllers', []); 

AndroidManifest.xml:

<?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="com.ionicframework.wefeed949805" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="wefeed" android:theme="@android:style/Theme.Black.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SEND" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:mimeType="text/plain" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" /> 
</manifest> 
+0

stai cercando di aprire l'url? –

+0

Ho intenzione di "fare cose" con l'url. Nella mia app, ho intenzione di interagire con un'API per estrarre i dati dalla pagina dell'URL. In questo momento, non riesco ad accedere all'url, quindi solo ottenerlo sarà utile. – Shaun

+0

@Shaun: sei in grado di farlo. Puoi dirmi quali passi hai seguito –

risposta

7

ho lavorato su qualcosa di simile. Sono stato in grado di ottenere l'url utilizzando questo plugin per Initsogar

Il plugin può essere trovato qui https://github.com/Initsogar/cordova-webintent

È possibile ottenere l'url in entrata come segue:

var incomingURL 
window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_TEXT, 
     function(url) { 
     incomingURL = url 
     console.log(incomingURL); 
     }, function() { 
     incomingURL = false; 
     } 
); 

Spero che questo aiuti e buona fortuna sull'app! Ionic è fantastico :)

+0

Giuro di averlo provato prima e non ha funzionato. Comunque grazie! – Shaun

+0

Nessun problema! Ho avuto lo stesso problema all'inizio quando provavo il getURI. Questo funziona bene anche per le app che condividono più dell'URL come Flipboard, ad esempio, che passa un'intestazione e un URL quando si "condivide" e si pubblica un articolo. –

+0

quando si avvia tramite http/https link, funziona per me quando si usa '.getUri()' invece di '.getExtra()'. Dipende dal tipo di intento che sembra. –

1

Per assistenza generale e sviluppi recenti voglio aggiungere una risposta a questo.

C'è un plug-in cordova chiamato Custom URL scheme. Per la documentazione del plugin è solido non aggiungo ulteriori informazioni.