android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝对可以用的而且也比较清晰的代码!(ps:还是先剧透下吧,第三方大部分浏览器无法成功。)
点击浏览器中的URL链接,启动特定的App。
首先做成HTML的页面,页面内容格式如下:
<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>
这一句就可以了。
各个项目含义如下所示:
scheme:判别启动的App。 ※详细后述
host:适当记述
path:传值时必须的key ※没有也可以
query:获取值的Key和Value ※没有也可以
作为测试好好写了一下,如下:
<a href="myapp://jp.app/openwith?name=zhangsan&age=26">启动应用程序</a>
接下来是Android端。
首先在AndroidManifest.xml的MAIN Activity下追加以下内容。(启动Activity时给予)
※必须添加项
<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" android:host="jp.app" android:pathPrefix="/openwith"/>
</intent-filter>
HTML记述的内容加入<data …/>。
其中必须的内容仅scheme,没有其他内容app也能启动。
※注意事项:intent-filter的内容【android.intent.action.MAIN】和 【android.intent.category.LAUNCHER】这2个,不能与这次追加的内容混合。
所以,如果加入了同一个Activity,请按以下这样做,否则会导致应用图标在桌面消失等问题。
复制代码
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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" android:host="jp.app" android:pathPrefix="/openwith"/>
</intent-filter>
复制代码
这样的话,没有问题。
接下来在Activity中需要取值的地方添加以下代码,我是直接写在OnCreate函数里的:
Intent i_getvalue = getIntent();
String action = i_getvalue.getAction();
if(Intent.ACTION_VIEW.equals(action)){
Uri uri = i_getvalue.getData();
if(uri != null){
String name = uri.getQueryParameter("name");
String age= uri.getQueryParameter("age");
}
}
这样就能获取到URL传递过来的值了。
——————————————————————————————————我是分割线————————————————————————————————————
代码copy完了,是不是很惊奇的发现用浏览器输入
myapp://jp.app/openwith?name=zhangsan&age=26
是不是404,打不开?
楼主你这不是骗人么!楼主你个混蛋啊。
客官,稍安勿躁啊,你看看你用的浏览器是什么?UC,猎豹,欧朋?放弃吧,试试系统自带浏览器或者谷歌浏览器吧。肯定能成功的,不能成功的话再来坑我。哈哈。
——————————————————————————————————我是分割线————————————————————————————————————
突然觉得好悲哀,好不容易get了这个技能,却不能被第三方浏览器使用。在这个android浏览器大部分被第三方占据着的时代不得不说是个悲剧啊。
接下来还是说说为什么第三方浏览器不能成功吧。首先,我发现的是UC浏览器,如果你使用了自己的scheme,而不是http的话,uc会默认在你的scheme前面添加http://。这太坑爹了。其他浏览器没看是不是同样的情况。发现这个问题后我就试着把自己的scheme换成http。然后满怀期待的又跑了一遍,结果还是坑爹了。所以我想会不会是第三方浏览器对url做了处理。到这里,我也无可奈何了。我测试了UC,猎豹,欧朋,这3个都不支持。系统自带的和谷歌浏览器是支持的。
最后再补充个线索吧,在浏览器里搜索百度应用。进了他们的页面后,他们是可以实现在各种浏览器启动已经安装好的本地app的。看到这个后我就看了下他们页面的源码。
在这里他们页面添加了个data-sentintent的标签,看到这里,应该能确定第三方浏览器应该是默认都不支持发intent的,只能自己起一个。根据前端说,这个标签应该是自定义的。我们前端看源码的时候发现是这样的
所以最后的结果应该是百度这边是起了个端口,然后在应用里启用了一个服务,来监听这个端口,来获取这个intent。大概就这个思路了。不过楼主没有实际去操作。项目时间紧,太麻烦了。
分享到:
相关推荐
【标题】"android_browser.rar" 是一个针对 Android 平台...在实际开发中,这样的功能可能用于打开网页链接、实现网页登录验证或者与外部网页数据的交互。学习这个实例有助于提升 Android 应用开发中浏览器集成的能力。
2. **WebView组件**:作为Android浏览器的核心,WebView负责渲染网页内容。源码中将展示如何配置和定制WebView,实现JavaScript交互、页面加载控制、缓存策略等功能。 3. **网络请求管理**:浏览器需要处理HTTP和...
在Unity引擎中调用Android浏览器是一项常见的跨平台开发任务,主要应用于游戏或应用需要打开一个网页链接时。这里我们将深入探讨如何实现这个功能,并结合给定的文件信息进行讲解。 首先,`Android.meta`文件表明这...
该工具的主要功能是帮助用户高效地从大量的网页数据中筛选出与apk相关的下载链接,便于用户快速获取所需的Android应用软件。以下是关于这个工具及其涉及的IT知识点的详细解析: 1. **数据采集**:在描述中提到,...
这样,当用户点击下载按钮时,就会在系统浏览器中打开指定的下载链接,从而规避微信的限制。 5. **微信环境的检测** 为了确保只在微信环境中执行特定的JavaScript逻辑,我们可以检测UserAgent来判断当前是否在...
首先,我们来看如何启动默认的Android浏览器来打开指定的URL。这通常通过发送一个隐式Intent来完成。隐式Intent允许我们启动具有特定动作(Action)的任何可以处理该动作的应用。在这个例子中,动作是`Intent.ACTION...
当你想要从自己的应用中启动浏览器,比如点击一个链接时,你需要创建一个Intent,并指定操作类型为ACTION_VIEW,然后设置数据URI,这通常包含你要打开的网页URL。 以下是关于Android打开浏览器的相关知识点: 1. *...
在Android平台上,微信内置的浏览器在处理某些特定的网页交互时可能会出现一些独特的问题,比如在尝试通过微信浏览器扫描二维码下载APK应用时,可能会遇到显示白屏的状况。这个问题通常与微信浏览器对某些Web技术的...
标题中的“Android 可直接点击的访问固定网站的应用”指的是在Android平台上开发的一种特殊类型的应用程序,它允许用户通过点击应用图标直接访问预设的网页,而无需打开浏览器输入URL。这种应用程序通常被称为Web ...
本工程用于展示使用java如何实现这样的功能:使用系统默认浏览器打开http网址;使用用户指定的浏览器打开http网址。 本工程编码方式为:GBK 出现异常即解决方法: 当调用Tool类中的第二个方法时,指定的browerType...
在移动互联网时代,微信作为一款超级应用,拥有庞大的用户基数,很多开发者希望能在微信内实现直接跳转到外部链接并引导用户下载APP。本话题主要探讨如何在微信环境中实现这一功能,同时兼容安卓(Android)和苹果...
这时需要微信跳转外部浏览器打开页面的功能,对于ios用户默认可以通过微信内置浏览器点击右上角的更多按钮从而选择“在浏览器中打开”,对于安卓用户则可以实现微信内直接跳出到手机默认浏览器。但是很多用户其实并...
【安卓浏览器WebViewJSHTML5相关】 在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入一个可以...通过实践这些示例,你可以更好地理解和掌握如何在Android应用中利用WebView增强用户体验。
- **处理未安装情况**:当用户点击链接但应用未安装时,微信会自动将请求转发到默认浏览器,展示下载页面。确保下载页面的体验良好,提供清晰的下载指示。 3. **代码实现**: 解压后的文件“微信跳转到默认浏览器...
最后,为了提高用户体验,我们还可以添加一些额外的功能,比如启用JavaScript执行、禁用WebView的缩放功能、处理点击链接时是否在内部打开等。这可以通过调用WebView的相关方法实现: ```java // 启用JavaScript ...
本小程序是一个支付宝控件接口示例,当进入支付宝页面的时候点击所要支付的内容时会弹出提示框问是否安装支付宝支付服务,用户可以选择是否可以安装,只有安装后才可以支付,大家可以多多学习里面的编写思想,界面...
2. 运行与调试:点击运行按钮,Android Studio会编译、安装并启动应用,调试器可以设置断点,检查变量值,追踪代码执行流程。 六、布局设计 1. XML布局编辑器:通过可视化界面设计UI元素,提供拖放功能和属性编辑。...
4. **WebView配置**:在Android应用中使用WebView时,可能需要进行一些配置,如设置JavaScript支持、开启硬件加速、处理点击链接等。在C#代码中,这些配置可以通过WebView的属性和方法来实现,例如`WebView.Settings...
Android WebView或手机浏览器打开连接问题解决办法总结 1.通常情况下 大家可能都想使用WebView打开网页内部链接而不想再调用手机浏览器, 我们可以通过以下两种方法实现: (1)为WebView设置一个WebViewClient,并...