我需要在点击通过电子邮件收到的超链接时唤醒我的应用程序。
任何想法?请帮忙。
先谢谢。
答案 0 :(得分:2)
这可以通过使用自定义URI方案(例如市场应用处理的market:
网址)或使用intent:
方案的自定义操作来完成。
在这两种情况下,您都应该创建一个在用户点击链接时启动的活动。
让我们先来看看第一个案例:
首先在清单中声明活动:
<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
}
}
这次链接应具有以下格式:
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。