Android - 在电子邮件中从Hyperlink启动我的APP?

时间:2011-11-23 09:05:41

标签: android email hyperlink

我需要在点击通过电子邮件收到的超链接时唤醒我的应用程序。

任何想法?请帮忙。

先谢谢。

1 个答案:

答案 0 :(得分:2)

这可以通过使用自定义URI方案(例如市场应用处理的market:网址)或使用intent:方案的自定义操作来完成。

在这两种情况下,您都应该创建一个在用户点击链接时启动的活动。

让我们先来看看第一个案例:

1。自定义方案

首先在清单中声明活动:

<activity android:name="LinkHandler">
  <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="SACPK" android:host="www.anyhost.com" />
  </intent-filter>
</activity>

在这种情况下,链接应该看起来像SACPK://www.anyhost.com/anything-goes-here

您的活动将收到意图中的全部链接,因此您可以根据查询参数或路径处理它并决定下一步该做什么:

public class LinkHandler extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Uri uri = getIntent().getData();
        // this is the URI containing your link, process it
    }
}

2。意图:方案

这次链接应具有以下格式:

intent:#Intent;action=com.sacpk.CUSTOM_ACTION;end

并且intent-filter应包含您将在活动中检查的相应操作:

<intent-filter>
  <action android:name="com.sacpk.CUSTOM_ACTION" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

并使用onCreate方法:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if ("com.sacpk.CUSTOM_ACTION".equals(getIntent().getAction()) {
         // then you really know you got here from the link
    }
}

此方法的缺点是您不会根据自己的意图获得任何数据。

整个答案基于commonsware的精彩书籍The Busy Coder's Guide to Advanced Android Development