2014-07-01 7 views
0

J'ai une application multiplateforme développée dans Xamarin. Dans la version iOS J'utilise un schéma d'URL personnalisé pour charger une page Web spécifique dans une vue web, tels queschéma personnalisé android et chrome intention

myapp: // returnUrl = http: /google.com.au

Comme un client a peu d'autres applications chez nous, il veut garder le schéma personnalisé dans le même format. Dans l'android, j'ai trouvé qu'une telle intention peut être ouverte à partir de Firefox, mais pas par courrier électronique ou Chrome. J'ai trouvé que Chrome needs a custom intent to make it work. J'ai essayé de l'implémenter mais je n'ai pas réussi à le faire fonctionner.

Voici ma mise en œuvre manifeste:

[Activity(Label = "MyApp", 
    MainLauncher = true, 
    LaunchMode = LaunchMode.SingleTask, 
    ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)] 
[IntentFilter(new[] { Intent.ActionView }, 
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, 
    DataScheme = "myapp")] 

Wich va créer un fichier manifeste suivant:

<activity android:configChanges="orientation|screenSize" android:label="MyApp" android:launchMode="singleTask" android:name="myapp.auth.droid.MainActivity"> 
    <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.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="myapp" /> 
    </intent-filter> 
</activity> 

j'ai essayé de saisir l'intention de Firefox et le convertir en URI dans l'application, mais l'intention suivante ne fonctionne pas à partir de Chrome (il fonctionne à partir de Firefox BTW):

myapp: //? returnUrl = http:/google. com.au # intention; action = android.intent.action.VIEW; launchFlags = 0x4400000, composante = MyApp.MyApp/myapp.auth.droid.MainActivity, fin

Est-ce que je manque quelque chose?

NOTE. Le schéma http: // peut être utilisé mais ce n'est pas une option préférée.

NOTE 2. J'utilise Nexus 5, pour Chrome, vous devez utiliser l'intention de chrome Android 4.4.4

+0

peut y ou mettez un hôte fictif là, ou juste un slash supplémentaire, 'myapp: // dummy /? returnUrl ...' – domen

Répondre

2

, l'ancienne n'est plus prise en charge dans la version 18 après

L'objectif devrait ressembler à quelque chose dans ce format

intent://some_optional_data#Intent;scheme=app_scheme;package=package_name;end 

Consultez ce site pour obtenir des informations plus détaillées: Android Intents with Chrome

cette méthode serait également revenir à Google Play et

+0

Je peux utiliser l'ancienne façon avec Chrome 36.0.1985.131 apparemment. – domen

+3

Cette réponse est inutile. Cela n'explique pas les composants de l'URL. Android Intents avec Chrome est également un document terrible. – caleb

+0

Vous en avez un meilleur? @caleb – joerx