2016-08-04 75 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

相关问题