Filtre d'intention de Lancer Mon Activité lors de l'URI personnalisé est cliqué
Je suis en train de permettre à un URI d'être enregistré pour ouvrir avec mon application. Comme le PatternRepository
sur les Blackberry et les CFBundleURLName
/CFBundleURLSchemes
sur l'iPhone. Comment puis-je obtenir les mêmes résultats sur l'Android?
Le système sera d'envoyer des e-mails avec le lien suivant: myapp://myapp.mycompany.com/index/customerId/12345
. L'idée est que l'utilisateur doit être en mesure de cliquer sur le lien pour ouvrir l'activité du client dans l'application.
J'ai essayé de nombreuses suggestions des autres AFIN de postes, mais je ne peux pas obtenir le système d'exploitation de reconnaître le motif et ouvrir mon application.
Sur L'application Gmail, il ressemble à ceci: myapp://myapp.mycompany.com/index/customerId/12345. Il reconnaît et souligne la myapp.mycompany.com/index/customerId/12345
partie du lien et il s'ouvre dans un navigateur. Le myapp://
partie n'est pas linkified.
La norme de l'application de messagerie traite l'ensemble de la liaison en tant que texte brut.
Ce qui me manque ici?
PS: j'ai déjà regardé
Comment implémenter mon propre schéma d'URI sur Android
et Comment enregistrer quelques URL de l'espace de noms (myapp://app.start/) pour accéder à votre programme en appelant une URL dans le navigateur dans le système d'exploitation Android?
Le Manifeste:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="2"
android:versionName="0.0.8"
package="com.mycompany.myapp.client.android">
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="7"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:label="@string/app_name"
android:name="myappApplication"
android:icon="@drawable/ic_icon_myapp"
android:debuggable="true">
<activity
android:label="My App"
android:name=".gui.activity.LoginActivity"
label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".gui.activity.CustomerDetailActivity" >
<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>
<activity android:name=".gui.activity.CustomerDetailActivity"/>
<activity android:name=".gui.activity.CustomerImageViewerActivity" />
<activity android:name=".gui.activity.CustomerListActivity" android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".gui.activity.HomeActivity" android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".gui.activity.AboutActivity" android:configChanges="orientation|keyboardHidden"/>
<activity android:name=".gui.activity.AccountActivity" android:configChanges="orientation|keyboardHidden" />
</application>
</manifest>
Vous devez vous connecter pour publier un commentaire.
La solution finale a été un hacky solution de contournement à couvrir toutes les bases. L'e-mail contient également une pièce jointe avec une extension qui est enregistré pour l'ouvrir avec l'application.
Le Manifeste:
Lorsque je travaillais sur le protocole OAuth avec Google Agenda, j'ai dû ajouter ce filtre à l'Activité que je voulais recevoir le rappel:
La lorsque le navigateur a invoqué le
yourapp://goog
URL, il serait de retour à mon Activité.BROWSABLE
Catégorie et les données modifiées à<data android:scheme="myapp" android:host="myapp.mycompany.com"/>
mais il n'aide pas. L'application e-mail reconnaît lemyapp.mycompany.com/index/customerId/12345
comme un navigateur lien et de ne pas ouvrir dans mon application.myapp://
partie de l'URL? Avez-vous essayé d'entrer manuellement une URL dans le navigateur pour voir si ça fonctionne?Vous pouvez obtenir autour de la question de GMail ne pas lier non-standard des protocoles à l'aide d'un standard d'URL HTTP avec une redirection 302. Vous pouvez soit le mettre en place sur votre site web serveur web ou un serveur d'applications ou pour l'accès rapide et sale de test vous pouvez utiliser un raccourcisseur d'URL comme http://bit.ly.
C'est la solution pour moi. Merci @DanO
Avez-vous séchés à l'ajout d'une catégorie pour votre intent-filter:
Vous pouvez toujours essayer d'envoyer vos e-mails à l'aide de HTML et ensuite utiliser un
<a>
balise pour créer l'URL. Je ne pense pas qu'il existe un moyen de changer la façon dont le Gmail ou e-Mail analyser leur texte, car ils ont probablement utiliser leLinkify
classe.Une autre option serait d'utiliser l'adresse http://et puis il suffit de l'analyser pour un sous-domaine personnalisé spécifique qui permettrait de fournir à vos utilisateurs la possibilité d'ouvrir dans un navigateur ou dans votre application.
PatternRepository
sur les Blackberry et lesCFBundleURLName
&CFBundleURLSchemes
sur l'iPhone. Comment puis-je obtenir les mêmes résultats sur l'Android?myapp.mycompany.com/index/customerId/12345
partie est souligné et s'ouvre dans un navigateur. J'ai mis à jour mon manifeste dans le poste principal de représenter ce que j'utilise maintenant.<data android:scheme="myapp" android:host="*"/>
?Je viens de tomber sur cela aussi, mais pour le standard http: schéma d'url. Gmail n'apparaît pas à ajouter toutes les catégories de l'Intention. Maintenant, je check pour ÉDITABLES, mais j'ai aussi inclure un chèque pour !l'intention.hasCategories() et permettent d'aller ainsi à travers.