使用意向URI启动我的应用程序

我知道这已经在StackOverflow中问了很多次了,但我还没有find一个解决scheme。 我的应用程序发送一个链接的电子邮件,点击时应启动应用程序。

根据@hackbod,最好的方法是使用Intent URI(见这个 )。 这是我的代码,设置意图,并把它放在电子邮件正文:

Intent customIntent = new Intent(CUSTOM_ACTION); customIntent.setPackage(MY_PACKAGE); customIntent.addCategory(MY_CAT_BROWSABLE); customIntent.addCategory(MY_CAT_DEFAULT); String customUri = customIntent.toUri(Intent.URI_INTENT_SCHEME); String emailBody = getString(R.string.intent_link, customUri); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/html"); intent.putExtra(Intent.EXTRA_SUBJECT, "Recommending vid"); intent.putExtra(Intent.EXTRA_TEXT , Html.fromHtml(emailBody)); try { startActivity(Intent.createChooser(intent, "Choose email client:")); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); } 

这是我从LogCat中得到的:

 08-25 17:01:23.333: VERBOSE/Test URI(16987): intent:#Intent;action=com.test.project.action.VIEW_VID_FROM_LINK;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;package=com.test.project;end 08-25 17:01:23.338: VERBOSE/Test email text(16987): Hi,<br><br>Testing intents from an email.<br><br> A standard website: <a href=http://www.google.com>Go to Google</a>.<br><br> This link should launch the app: <a href=intent:#Intent;action=com.test.project.action.VIEW_VID_FROM_LINK;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;package=com.test.project;end>Click link to launch</a>. 

当我使用GMail应用程序查看手机中的电子邮件时,我可以点击Google链接,然后启动浏览器,没有任何问题。

但意图的链接是不可点击的(虽然从草稿看起来应该是可点击的)。 有没有人尝试过,并使其工作?

从草稿:链接看起来可点击发送邮件:链接不可点击

编辑#1:我也尝试设置为Intent.ACTION_VIEW的行动,但链接仍然是不可点击的。

编辑#2:显然,链接真的可点击的。 我尝试使用另一个电子邮件客户端,链接是可点击的! 似乎在GMail中有一个错误。 好吧。 但显然,这比我想象的要难。 我试过使用:

 Uri.Builder builder = new Uri.Builder(); builder.scheme("my.own.scheme"); builder.authority("my.authority"); Uri newUri = builder.build(); Intent customIntent = new Intent(CUSTOM_ACTION, newUri); 

正如@CommonsWare所build议的那样,我试着检查是否有这个customIntent 。 显然有一个,这是我所期待的。 所以下一步就是把这个意图变成一个我可以在电子邮件中使用的URI。 我用了:

 String customUri = customIntent.toUri(Intent.URI_INTENT_SCHEME); 

根据我对文档的理解,应该给我像通常的http链接,只有在设置为intent的scheme。 然后我可以使用这个customUri作为电子邮件中链接的值。 但是,看起来情况并非如此。 有没有人有什么.toUri必须返回的例子?

Solutions Collecting From Web of "使用意向URI启动我的应用程序"

你可以在你的<a>元素中尝试引用你的URL,因为HTML是应该写的。

您也可以尝试通过parseUri()PackageManagerqueryIntentActivities()来确认生成的URL是否parsing为某些东西 – 如果没有,那么URL有问题。

这里是一个示例项目,显示URI_INTENT_SCHEME ,以防给你任何想法。

使用零标志来创build您的自定义scheme的URI。 Intent.URI_INTENT_SCHEME标志强制使用“意图:”scheme(和整体意图URI疯狂的语法)。

 String customUri = customIntent.toUri(0);