2014-09-24 4 views
10

Я пытаюсь настроить способ получения URL-адреса из другого приложения. Например, вы находитесь в браузере, щелкаете share и отправляете ссылку на другое приложение (мое приложение). Я нашел this cordova plugin и интегрировал его в свое приложение, но я продолжаю не показывать URL-адрес, когда я его тестирую.Получить URL-адрес в Ionic/Cordova

Я получаю предупреждение, которое говорит:

getUri url:null

Любая помощь будет большим. Приятно добавлять дополнительный код, если это полезно.

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(); 
    } 

Это 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

Вы пытаетесь открыть URL-адрес? –

+0

Я собираюсь «делать что-то» с URL-адресом. В моем приложении я собираюсь взаимодействовать с api, чтобы извлекать данные со страницы url. Прямо сейчас, я не могу получить доступ к URL-адресу, поэтому просто получить его будет полезно. – Shaun

+0

@Shaun: вы можете это сделать. Можете ли вы сказать, какие шаги вы выполнили? –

ответ

7

Я работаю над чем-то подобным. Я был в состоянии получить URL, используя этот плагин Initsogar

плагин можно найти здесь https://github.com/Initsogar/cordova-webintent

Вы можете получить входящий URL следующим образом:

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

Надеется, что это помогает, и хорошо удачи в приложении! Ионный является удивительным :)

+0

Клянусь, я пробовал это раньше, и это не сработало. В любом случае, спасибо! – Shaun

+0

Без проблем! Сначала у меня была такая же проблема при попытке getURI. Это хорошо работает и для приложений, которые используют не только URL-адрес, например, Flipboard, который передает заголовок и URL-адрес при совместном использовании и публикации. –

+0

при запуске через http/https-ссылку, он работает для меня при использовании '.getUri()' вместо '.getExtra()'. Это зависит от типа намерения. –

1

Для общей помощи и последних событий я хочу добавить ответ на этот вопрос.

Существует плагин cordova под названием Custom URL scheme. Поскольку документация плагина прочная, я не добавляю дополнительной информации.