所以我想创建一个Android应用程序,这样它就会在android操作系统中的某个地方注册(或者只在系统启动时启动),并且当手机用户在web浏览器中点击网页上的特殊按钮时:
<a href="myapp://mysettings">Foo</a> 我的应用程序将弹出并使用该URL中发送的参数运行。
那么我该怎么做呢?
我需要一个具有代码的教程!
发布于 2010-03-12 12:12:42
您需要通过W3C等遵循URI的标准规则,这基本上意味着:不要这样做。
Android定义了用于描述通用意图的Uri语法。有一些关于意图的方法可用于在此表示形式之间进行转换,例如:http://developer.android.com/reference/android/content/Intent.html#toUri(int)
因此,要做到这一点,方法是在清单中使用常规工具来描述您将处理特定组件的意图的类型,特别是在您自己的命名空间(com.mycompany.myapp.action.DO_SOMETHING或其他任何名称空间)中定义一个操作名称。然后,您可以创建一个与您的组件匹配的意图,并使用Intent.toUri()获取该意图的URI表示。这可以放在你的链接中,然后当按下时将查找处理和的东西,从而找到你的应用程序。注要像这样从浏览器启动,组件的必须处理BROWSABLE类别。(你不需要在你放入链接的意图中包含这些内容,浏览器会自动为你添加这些内容。)
最后,您可能需要使用以下命令设置应用程序的意图包:http://developer.android.com/reference/android/content/Intent.html#setPackage(java.lang.String)
这是该平台中的一个新功能,它允许您将意图直接链接到您的应用程序,以便其他应用程序无法拦截和处理它们。
总之:阅读有关意图和意图过滤器的常规文档(例如NotePad教程,尽管您不会在这里使用content: URI,可能只是自定义操作),并让您的应用程序以这种方式工作。然后,您可以创建一个浏览器链接,以同样的方式启动您的应用程序,前提是您的intent-filter处理BROWSABLE类别。
发布于 2010-11-03 16:51:40
首先,为了能够从浏览器/邮件中带有自定义方案'myapp‘的链接启动你的应用程序,如下所示设置意图过滤器。
<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="myapp"/>
</intent-filter>并解析链接myapp://someaction/?var=str&varr=string中的查询
(代码过于简化,没有错误检查。)
Intent intent = getIntent();
// check if this intent is started via custom scheme link
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Uri uri = intent.getData();
// may be some test here with your custom uri
String var = uri.getQueryParameter("var"); // "str" is set
String varr = uri.getQueryParameter("varr"); // "string" is set
}编辑如果您使用自定义方案启动您的应用程序,其中一个问题是:其他应用程序中的WebView可能无法理解您的自定义方案。这可能导致针对具有自定义方案的链接的那些浏览器显示404页面。
发布于 2011-04-13 22:53:54
这是我对chase贡献的提成。
在要在清单中加载的活动中创建意图筛选器,如下所示:
<intent-filter>
<action android:name="com.bubblebeats.MY_CUSTOM_ACTION" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>您的网页URL将如下所示:
intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;end从浏览器启动apk的最基本的HTML代码如下所示:
<body>
<a href="intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;end">click to load apk</a>
</body>用于向intent添加变量的
您可以在Android代码中生成URI,如下所示:
Intent i = new Intent();
i.setAction("com.bubblebeats.MY_CUSTOM_ACTION");
i.putExtra("some_variable", "123456");
Log.d("ezpz", i.toUri(Intent.URI_INTENT_SCHEME));这将产生以下结果:
04-13 09:47:30.742: DEBUG/ezpz(9098): intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;S.some_variable=123456;end你只需要这一部分:
intent:#Intent;action=com.bubblebeats.MY_CUSTOM_ACTION;S.some_variable=123456;end仔细看看这里发生了什么,您就可以看到如何跳过代码步骤,自己手动创建这些URI。
尤其是这一部分:
S.some_variable=123456https://stackoverflow.com/questions/2430045
复制相似问题