Android操作Html打开其他APP_Android

现在Android程序员是越来越多,甚至在部分地区出现供大于求的局面,从大背景来看,Android的生态链会渐渐的趋于理智,并且会不断的更新人才以及开发工具,前几年的eclipse异常火爆,现在Android studio凭借着良好的体验,已经有越来越多的人转战到Android studio里面进行开发,所以这也是一个多样性的体现,废话了这么多,我想要表达的是,人多不是问题,重要的是自己有这个能力去胜任这份工作,不停的学习新技术,更新自己。

现在我们讲讲,怎么在Html中打开手机里面的APP,这个需求现在使用的也是越来越广泛了,比如淘宝、支付宝的支付等等,都是使用到了这个功能,但是到底怎么去实现呢,我这里就使用webview来模拟这样的一个功能,首先看看html里面代码:

<!DOCTYPE HTML>
<html>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
  <a href="xiaopinggaiblog://xiappinggai/open">打开app</a><br/>
</body>
</html>

对的,你没有看错,就这么几行代码,没有用到 js,也没有使用到css,(/a)标签是一个超链接标签,这个相信有点基础的人是看得懂的,重要的是看看这个超链接里面的内容:xiaopinggaiblog://xiappinggai/open,这个是我自己自定义的,先看看我们要打开的应用程序的注册文件里面的写法:

<activity
      android:name=".MainActivity"
      android:excludeFromRecents="true"
      android:label="@string/app_name"
      android:screenOrientation="portrait" >

      <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.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data
          android:pathPrefix="/xiappinggai/open"
          android:scheme="xiaopinggaiblog" />
      </intent-filter>
    </activity>

我这里模拟的是打开另外一个程序的主界面,看到下面的一个意图过滤器,这里有一个< data/>标签,这个标签里面的内容:

<data android:pathPrefix="/xiappinggai/open"
     android:scheme="xiaopinggaiblog" />

PathPrefix属性只指定了部分路径,它会跟Intent对象中的路径初始部分匹配。
scheme属性用于设定URI的scheme部分。它是给指定URI设置的最基本的属性,至少要给过滤器设置一个scheme属性,否则,其他的URI属性就没有意义了。

这要这么配置,那就可以完美的打开其他APP了,同时,有的浏览器也支持这个功能,假如在测试的时候出现不能打开的情况,那么可以考虑换一个浏览器测试。

接下来,我们再看看怎么传数据到那个应用程序呢?其实也不难,只需要改一下url就行了:具体如下:

xiaopinggaiblog://xiappinggai/open?data=xiaopinggaiblog

如果要穿多个参数呢?其实也是可以的,可以用&符号去连接,这么写:

xiaopinggaiblog://xiappinggai/open?data=xiaopinggaiblog&arga=value

那么在那个应用程序怎么接收呢,其实也是几行代码的事,我们在要接收数据的Activity里面这样写:

   Uri uridata = this.getIntent().getData();
      if (uridata!=null) {
        String mydata = uridata.getQueryParameter("data");
      }

这样写就可以获取到数据了,但是还有一个问题,当要打开的APP没有安装,那这个时候点击打开APP会出现错误,这样就很影响交互体验了,因此我们可以这么做:

mWeb.setWebViewClient(new WebViewClient(){
      @Override
      public void onReceivedError(WebView view, int errorCode,
          String description, String failingUrl) {
        mWeb.loadUrl("file:///android_asset/html2.html");
        Toast.makeText(MainActivity.this, "没有这个APP", 0).show();
      }

    });

这样做就可以,这是在网页加载失败的时候执行的操作。我们除了可以这样提示,我们也可以让他跳转到App的下载地址等一系列自己想要的操作。

好了,全部代码都在这里了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, html
app
html打开android app、android 打开本地html、android打开html文件、android 打开html、android 打开html5,以便于您获取更多的相关知识。

时间: 2024-12-17 14:10:26

Android操作Html打开其他APP_Android的相关文章

基础-关于Android在模拟器打开的首页跟在手机打开的首页不同

问题描述 关于Android在模拟器打开的首页跟在手机打开的首页不同 我是在网上下载一个别人已经写好的二维码扫描功能的项目,然后我在其基础上改变他的首页,然后在模拟器中能成功运行,并符合想象,可是一把apk拉到手机上安装时,又是原来的首页,有哪位大神能够帮忙解析一下吗? 解决方案 清除下浏览器缓存看看.二维码扫描是否正确.还有,对方网站是否根据ip判断的登录方式.

在android程序中打开HPROF文件时出错

问题描述 在android程序中打开HPROF文件时出错 当我用Memory Analyzer打开HPROF文件时(由Debug.dumpHprofData创建),得到的是以下的异常: java.io.IOException: Unknown HPROF Version (JAVA PROFILE 1.0.3) at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:124) at org.eclipse.m

android开发-在Android开发中打开网络设置出错,点击后直接退出而不是打开网络设置 怎么会事啊

问题描述 在Android开发中打开网络设置出错,点击后直接退出而不是打开网络设置 怎么会事啊 private void showSetNetworkDialog() { AlertDialog.Builder builder = new Builder(this); builder.setTitle("设置网络"); builder.setMessage("网络错误请检查网络链接"); builder.setPositiveButton("设置网络&qu

操作-c#打开excel后在手动打开excel两个excel句柄一样

问题描述 c#打开excel后在手动打开excel两个excel句柄一样 我又重新编辑了一下 1.打开软件 2..点文件打开 3.打开psy++ 4.手动打开了一个excel 5.spy++查看 这个时候我软件本来是要操作之前打开的report.xlsx, 就变成了操作新建 Microsoft Office Excel 2007 Workbook.xlsx了... 下面是打开程序 public static Excel._Application reportExcel; public stati

android 第二次打开页面后seekbar怎样停留在上次编辑位置

问题描述 android 第二次打开页面后seekbar怎样停留在上次编辑位置 android 第二次打开页面后seekbar怎样停留在上次编辑位置 求大神给个解决方法~ 解决方案 onSaveInstanceState事件中,保存信息http://coolxing.iteye.com/blog/1279447 解决方案二: 之前将相关信息保存下来 解决方案三: 没错,在onStop()方法中调用onSaveInstanceState(),或者直接放在SharedPreferences里面也行

Android 通过网页打开自己的APP(scheme)

Android 通过网页打开自己的APP(scheme) 通过用手机的浏览器(内置,第三方都可)访问一个网页,实现点击一个链接启动自己的应用,并传递数据. 首先在Mainifest文件里面对要启动的Activity添加一个过滤器. 1 <activity 2             android:name="com.example.helloworld.MainActivity" 3             android:label="@string/app_nam

c++-运行一个C++程序进行文件操作时 打开文件 总会把文件先变为空的 再打开 这是为什么呢?求解

问题描述 运行一个C++程序进行文件操作时 打开文件 总会把文件先变为空的 再打开 这是为什么呢?求解 int main() { system("color 31"); ofstream file("同学录系统.txt",ios::out); if(!file) { system("color 35"); cout<<"对不起,文件打开失败!"< abort(); //程序异常终止进程 } cout int

activity跳转-为什么eclipse android 程序一打开就直接停止运行

问题描述 为什么eclipse android 程序一打开就直接停止运行 本人刚开始学习android,跟着书写了个程序,这个程序是在一个activity中的button跳转到另一个activity中,编译完没有问题,但是在手机上运行的时候却是意外停止, 这是第一个activity的代码: import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.vie

android操作百度地图,绘制自己得图形加到地图中无法准确定位到某个经纬度

问题描述 android操作百度地图,绘制自己得图形加到地图中无法准确定位到某个经纬度,图形是一个长方形,下面有个点对应到某个经纬度,由于图形是按照左上方为起始点,所以需要计算做上方得经纬度,求大神指点 解决方案 解决方案二:百度地图中的经纬度和实际的经纬度之间有偏差,需要转换,你查查百度地图API中对应的方法解决方案三:已经搞定了,谢谢