2016-08-04 101 views
2

我正在嘗試使用深度鏈接啓動我的Android應用程序。基本上,用戶將收到帶鏈接的電子郵件,當用戶點擊鏈接時,應用程序應啓動。 我知道如何做基本的深度鏈接,但是,我想要啓動實際的應用程序,而不僅僅是一個特定的活動。我的深層鏈接方案就像「mydeeplinking」,在電子郵件中就像「mydeeplinking://」。 我在尋找類似於iOS深度鏈接的東西,它會啓動整個App。 任何幫助,將不勝感激。 在此先感謝。使用深度鏈接啓動Android應用程序

+0

應啓動發射活動,因爲如果用戶在點擊圖標 – Chol

+1

你在找什麼是意圖過濾器https://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app –

+1

請考慮接受一個答案,如果它幫助你 – SoroushA

回答

3

基本上,您需要做的就是使用intent-filter來告訴Android什麼類型的數據應該路由到您的應用程序。

的AndroidManifest.xml:

<activity android:name="com.example.MainActivity" > 

    <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" /> 
     <data android:scheme="https" /> 

     <data android:host="www.example.com" /> 

     <data android:path="/" /> 
     <data android:path="/map" /> 

    </intent-filter> 

</activity> 

,當用戶點擊這些鏈接,這將啓動您的MainActivity:

http://www.example.com/ 
https://www.example.com/ 
http://www.example.com/map 
https://www.example.com/map 
+0

感謝您的貢獻。 – user3298158

1

深層鏈接是通過火力地堡大大增強。開始有點困難,但效果很好!以link爲例。

將這種深度鏈接與iOS進行比較可能會導致混淆,因爲它們的工作方式不同。 Android一直能夠將信息從一個應用程序推送到另一個應用程序,甚至可以從網絡中獲取信息,這正是iOS所做的。這不是深度鏈接本身。它可能比這更進一步 - 它意味着甚至在用戶創建配置文件(或類似的東西)之前提供個性化的應用體驗。同樣重要的是要注意,即使通過安裝應用程序,深度鏈接也能保持此個性化信息,並以任何信息打開應用程序!這不僅僅是一個意圖!你的問題與URI方案有關。也許this將幫助,如果你仍然同意你正在尋找深層鏈接。

如果您只是想啓動一個應用程序(已經安裝在用戶設備上),intent過濾器是要走的路,intent可以傳遞信息。如果您希望用戶在未安裝的情況下使用應用中的活動,則android即時應用是正確的選擇。如果您正在尋找一種將用戶的電子郵件或互聯網「深入」信息傳遞給應用程序的方式,建議進行深層鏈接。

意圖過濾器可用於從網頁打開一些應用程序。當選擇可以在瀏覽器或應用程序(或多個應用程序)中打開的鏈接時,會從手機屏幕的底部拉起一個框,要求用戶在未來的點擊中打開默認設置。 (見下圖)網站的javascript可能需要更改以檢測用戶的操作系統併發送正確的URL調用。 iOS的工作方式稍有不同。

choose default app

這裏是如何使用的意圖過濾器。它有一些額外的代碼,你會發現有用..

public void startNewActivity(Context context, String packageName) { 
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); 
    if (intent == null) { 
     // brings user to the market if app is not installed already 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("market://details?id=" + packageName)); 
    } 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // opens a new "page" instead of overlapping the same app 
    context.startActivity(intent); 
} 

如果您需要在同一時間傳遞數據,使用intent.putExtra("name", "value");

+0

感謝您的貢獻和有用的信息。 – user3298158

相關問題