用自己的意图处理Linkify onClick事件

我有一个包含电子邮件的文本视图,我希望能够点击它们在我自己的应用程序中启动一个活动。 我正在使用Linkify.addLinks(TextView, Linkify.EMAIL_ADDRESSES)使电子邮件可点击,但是这popup一个select器询问用户他们想要打开电子邮件的应用程序。我如何直接处理这个事件,所以我可以指定点击链接时要调用哪些活动?

Solutions Collecting From Web of "用自己的意图处理Linkify onClick事件"

卡洛斯的答案效果很好,但我也使用ACTION_VIEW外部意图我也想开始。 幸运的是,Linkify并没有将应用程序标识添加到意图(对于浏览器兼容性),我的其他意图不会添加,所以我使用以下逻辑来确保正确处理Linkify意图:

 @Override public void startActivity(Intent intent) { boolean handled = false; if (TextUtils.equals(intent.getAction(), Intent.ACTION_VIEW)) { String app_id = intent.getStringExtra(Browser.EXTRA_APPLICATION_ID); if ( TextUtils.equals(getApplicationContext().getPackageName(), app_id) ) { // This intent is a view coming from Linkify; handle internally // << do something smart here >> handled = true; } } if (!handled) super.startActivity(intent); } 

一种方法是使用Linkify来重载拥有TextView的活动的startActivity方法。 然后,检查应该是ACTION_VIEW的意图行动为Linkify意图:

 @Override public void startActivity(Intent intent) { if (TextUtils.equals(intent.getAction(), Intent.ACTION_VIEW)) { // Your code here } else { super.startActivity(intent); } } 

你可以使用内容提供者和意图filter。 可能必须写一个电子邮件地址的正则expression式,然后使用Linkify。 这里是一个如何使用Linkify自定义正则expression式和内容提供者的例子。