2013-02-19 9 views
9

Witajcie, próbuję uruchomić aplikację z linku na e-mail lub z posta na niektórych portalach społecznościowych. Wiem, że to pytanie zostało już podniesione przez niektórych przyjaciół, ale nadal problemem jest to, że w niektórych urządzeniach lub niektórych aplikacjach Gmail na Android nie pokazują znaczników zakotwiczenia lub link, który podałem.Uruchamianie aplikacji Android z linku lub wiadomości e-mail

Intencją filtr, że ustawienie mojej działalności jest poniżej:

<action android:name="android.intent.action.VIEW" /> 
<category android:name="android.intent.category.DEFAULT" /> 
<category android:name="android.intent.category.BROWSABLE" /> 
<data android:scheme="myappname" /> 

i jestem wysłanie e-maila z tym znacznikiem zakotwiczenia

myappname://processtobedone/?id=1 

Współpracuje z aplikacją e-mail i na urządzeniu Huewai, ale w domyślnej aplikacji Gmaila urządzenia, nie pokazuje, że ma łącze, a w niektórych urządzeniach domyślnie dołącza https: jako sufiks dla tagu i uruchamia przeglądarkę.

Mam nadzieję, że rozumiesz mój problem i mam nadzieję na lepszą odpowiedź.

Dziękujemy z góry.

+0

Możliwy duplikat [Zrób ogniwem w przeglądarce Android uruchomić moją aplikację?] (Http://stackoverflow.com/questions/3469908/make-a-link-in-the-android-browser- start-up-my-app) –

Odpowiedz

2

Stwórz prawdziwy link (http :), który przechodzi w stronę, którą kontrolujesz, na przykład statyczną stronę internetową na amazon s3, użyj javascript w tej witrynie, aby wykryć agenta użytkownika Android, a następnie przekieruj do linku z tagiem kotwicy .

+0

Nawet nie potrzebujesz JavaScript. Jeśli '' ma adres URL strony sieci Web zamiast niestandardowego schematu, użytkownik może wybrać otwarcie aplikacji bezpośrednio. – CommonsWare

+0

@CommonsWhat ah, to jak działa instagram. Zawsze zastanawiałem się, jak to jest wyborem. – CQM

+0

@CommonsWare Czy możesz powiedzieć, jak zdefiniować adres URL zamiast niestandardowego schematu. – CodingRat

12

Zamiast schemat niestandardowy, można mieć <intent-filter> który identyfikuje adres URL, który Sterowanie:

<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:host="www.this-so-does-not-exist.com" 
     android:path="/something" 
     android:scheme="http"/> 
</intent-filter> 

Następnie łączy się http://www.this-so-does-not-exist.com/something spowoduje swoją aplikację (w Chooser, wraz z Web przeglądaj) na urządzeniach z aplikacją i wyświetla stronę internetową na urządzeniach, które nie mają Twojej aplikacji.

+0

Dzięki i przepraszam za opóźnioną odpowiedź @CommonsWare. Spróbowałbym tego. – Dinash

+0

Cześć Dzięki za odpowiedź i działa dobrze na większości urządzeń, ale nie we wszystkich, ponieważ nie działa z HTC EVO 4G. Za każdym razem, gdy kliknę link, otwiera się bezpośrednio przeglądarka i jestem pewien, dlaczego tak się dzieje. Sprawdzono także, czy ustawione wartości domyślne nie są ustawione. – Dinash

+0

@Dinash: Takie podejście może nie działać na różnych urządzeniach HTC dostarczanych z USA z powodu obejścia wynikającego z zakazu importu uzyskanego przez firmę Apple. Zobacz http://commonsware.com/blog/2012/07/23/linkify-problem-patent-behavior.html i http://commonsware.com/blog/2012/07/24/linkify-problem-detection-mitigation .html – CommonsWare

0
<activity 
android:name=".SplashEmailActivity" 
android:screenOrientation="portrait" 
android:exported="true" 
android:launchMode="singleInstance" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" 
android:windowSoftInputMode="stateHidden|adjustResize" > 

<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="http" android:host="your.domain.name"/> 

</intent-filter> 

</activity> 
Powiązane problemy