当前位置:首页 » 安卓系统 » android调用app

android调用app

发布时间: 2022-12-28 02:23:35

⑴ Android点击短信链接打开App之App Link 技术实现(亲证篇)

学习资料:

Android 点击Url(短信链接)打开App 的调研与实现

Google App Link 技术实现(亲证篇)

AppLinks使用详解

实现方式分:Deep linking 与 Android App Links

Deep linking方式实现:具体可以参考 Android 点击Url(短信链接)打开App 的调研与实现

Android App Links方式实现

第一步 验证一个服务器地址(例如https://asuss.ryit.co),成功验证通过后,当用户在短信中点击于类似https://asuss.ryit.co/login的web链接,即可打开app本地相关页面,我们在AndroidMenifest的启动页进行配置

第二步 assetlinks.json文件制作 Android Studio中Tools>App Link Assistants

这个文件只能放在https的链接中,不管你之前在action中声明的是http或者https

第三步 验证

1)打开浏览器访问https://asuss.ryit.co/.well-known/assetlinks.json,正常应该看到该文件内容输出。

2)访问google api,查看app是否通过App Links验证(需翻墙这步一定要做,有人反馈如果不做这步还是deeplink)

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://asuss.ryit.co(替换你的服务器名)&relation=delegate_permission/common.handle_all_urls

3)在短信中编辑https://asuss.ryit.co,之后点击url直接跳转到应用中省去了跳转到浏览器的选择跳转过程

注意:图中url为个人虚拟url了,替换即可

散花,爱你们,我的安卓老兄弟们,安卓老姐们,我踩完坑了。

⑵ 怎么用网页的超级链接调用安卓手机的app

一、通过html页面打开Android本地的app

1、首先在编写一个简单的html页面

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<a href="m://my.com/">打开app</a><br/>

</body>

</html>

2、在Android本地app的配置

在AndroidManifest的清单文件里的intent-filte中加入如下元素:
<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:host="my.com"
android:scheme="m" />
</intent-filter>

示例截图如下:

然后使用“手机浏览器”或者“webview”的方式打开这个本地的html网页,点击“打开APP”即可成功开启本地的指定的app

二、如何通过这个方法获取网页带过来的数据

只能打开就没什么意思了,最重要的是,我们要传递数据,那么怎么去传递数据呢?

我们可以使用上述的方法,把一些数据传给本地app,那么首先我们更改一下网页,代码修改后:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="m://my.com/?arg0=0&arg1=1">打开app</a><br/>
</body>
</html>

(1).假如你是通过浏览器打开这个网页的,那么获取数据的方式为:

Uri uri = getIntent().getData(); String test1= uri.getQueryParameter("arg0"); String test2= uri.getQueryParameter("arg1");

(2)如果使用webview访问该网页,获取数据的操作为:
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri=Uri.parse(url);
if(uri.getScheme().equals("m")&&uri.getHost().equals("my.com")){
String arg0=uri.getQueryParameter("arg0");
String arg1=uri.getQueryParameter("arg1");

}else{
view.loadUrl(url);
}
return true;
}
});

⑶ Android APP调起另外一个APP并传值

第一种:

第二种:

setClassName内部也是调用的setComponent。

调用方:

被调用方在AndroidManifest的Activity中添加自定义action:

被调用方数据接收:

第一种:

调用方通过点击H5网页上按钮

这种方法存在着弊端就是没办法判断手机上是否安装APP时,更适合打开自己APP中Activity。一般建议js与java进行交互调用原生的方法: WebViewJavascriptBridge 使用简单方便,并且避免了一些js脚本注入漏洞。
第二种:隐式调用

被调用方在AndroidManifest的Activity中添加自定义action:

被调用Activity中数据接收:

注意: 这两种方式只适合针对某个页面,都只是在自己应用中跳转第三方应用,并不是真正的唤醒,比如应用A已经在后台存在了,应用B调用以上两种方式后,只是在应用B中重新打开了一个应用A,此时的应用A是相当与存在两个,一个是在后台单独存在,一个是依存应用B存在,是添加到应用B的栈中的,当点击A页面里面的跳转按钮时才真正调起跳转到A应用。

⑷ Android 跨应用间调用: URL Scheme

Android中的自定义的 URL Scheme 是一种页面内跳转协议,也可以被称为 URLRouter ,就是通过类似打开网页的方式去通过路由打开一个Activity,而非直接通过显式Intent方式去进行跳转。这样隐式intent的方法跳转好处如下:

上文已经说过, URL Scheme 是就通过类似打开网页的方式去通过路由打开一个Activity,其协议格式和我们打开网页输入的网址类似。

一个完整的完整的URL Scheme协议格式由scheme、host、port、path和query组成,其结构如下所示:

其中scheme既可以是Android中常见的协议,也可以是我们自定义的协议。Android中常见的协议包括content协议、http协议、file协议等,自定义协议可以使用自定义的字符串,当我们启动第三方的应用时候,多是使用自定义协议。

如下是一个自定义协议的URI:

通过上面的路径 Scheme、Host、port、path、query全部包含:

URL Scheme 的使用方法简要言之就是先在manifest中配置能接受Scheme方式启动的activity;当需要调用时,将Scheme协议的URi以Data的形式加入到Intent中,隐式调用该activity。

1). 在AndroidManifest.xml中对<activity >标签增加<intent-filter>设置Scheme

上面的设置中可以看到,MainActivity包含多个<intent-filter>设置,第一个是正常的启动,也就是在应用列表中启动;第二个是通过 URL Scheme 方式启动,其本身也是隐式Intent调用的一种,不同在于添加了<data>属性,定义了其接受 URL Scheme 协议格式为 urlschemel://auth_activity

这里需要说明下, URL Scheme 协议格式中,组成URI的这些属性在<data >标签中都是可选的 ,但存在如下的依赖关系:

当我们将intent对象中的Uri参数与intent-filter中的<data>标签指定的URI格式进行对比时,我们只对比intent-filter的<data>标签指定的部分,例如:

需要注意的是,intent-filter的<data>标签在指定path的值时,可以在里面使用通配符*,起到部分匹配的效果。

2). 使用URL启动Activity

当然可以在网页中调用

或者是在JS中调用

3.)如何判断URL Scheme是否有效

有时候需要把一些辅助性的、较为独立的APP在Home Launcher中隐藏起来,只允许一些特定的APP调用。这个时候,我们可以利用 URL Scheme 协议来做到这一点,设置AndroidManifest.xml中对<activity >标签如下

因为Home Launcher列出的应用图标要求必须有Activity同时满足

上面的配置中有多余的category和data限制存在,所以并不匹配,不会在Home Launcher出现,但是可以使用 URL Scheme 来启动。

这样就可以将一组APP设置一个统一的入口,然后根据实际需要在调用不同子APP,即所谓的 APP业务组件化 , URL Scheme 在其中有着重要的作用,更进一步讨论会在以后的文章中呈现,敬请期待。

参考文献:
http://blog.csdn.net/iispring/article/details/48481793
http://blog.csdn.net/hb707934728/article/details/53196419
http://www.cnblogs.com/whoislcj/p/5825333.html

⑸ 安卓浏览器开发怎样被其他APP调用

如果想要对方应用点击链接后直接调用你的浏览器打开,那是无法实现的(除非只装了你这一个浏览器)。
首先你应该了解,android中打开activity或者service是通过发送intent去执行的,而intent又有隐性和显性之分。
只有对方应用创建的是显性intent并指定了你开发的浏览器,那么才会直接以你的浏览器打开网页,
但这个intent是由发送方决定的,你作为浏览器的开发者是无可奈何的。

你能做的只是开发一个broadcastReceiver(广播接收器),告诉系统你是一个浏览器,
那么当用户用隐式intent去打开浏览器时,你就会作为一个备选浏览器供用户选择。

⑹ Android怎么调用系统自带邮箱app

在Android中,调用Email有三种类型的Intent: Intent.ACTION_SENDTO 无附件的发送 Intent.ACTION_SEND 带附件的发送 Intent.ACTION_SEND_MULTIPLE 带有多附件的发送 当然,所谓的调用Email,只是说Email可以接收Intent并做这些事情,可能也有其他的应用程序实现了相关功能,所以在执行的时候,会出现选择框进行选择。 1.使用SENTTO发送

1
2
3
4
5
6
7
8
9
10

Intent data=new Intent(Intent.ACTION_SENDTO);
data.setData(Uri.parse("mailto:[email protected]"));
data.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
data.putExtra(Intent.EXTRA_TEXT, "这是内容");
startActivity(data);
Intent data=new Intent(Intent.ACTION_SENDTO);
data.setData(Uri.parse("mailto:[email protected]"));
data.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
data.putExtra(Intent.EXTRA_TEXT, "这是内容");
startActivity(data);

⑺ Android内嵌网页,调用APP显示typeerror

因为你在该APP中重写了相关方法。
单从前端技术上是解决不了这个问题的,这个问题之所以不太好排查,一方面跟手机端的图片上传功能我不太常用到有很大关系。
我们见到一些其它的APP容器能支持该功能,所以思维在习惯上已经形成定势,误以为这是WebView默认就支持的。建议下次进行类似功能的需求评审,别忘了先了解下相应的APP容器是否支持该功能,如果没有,则需要找到相应的客户端开发同学评估一下工时,以免造成影响项目进度的风险。

⑻ android 怎么调用其它的app

在同一个应用中,大家都熟悉用Intent在Activity之间跳转。那么Intent能否再两个应用之间跳转呢。答案是肯定的。在Android2.0 后的做如下:
app1 org.freedom.app1.HelloActivityapp2 org.freedom.app2.TestActivity如何在app2的TestActivity调用app1的HelloActivity呢?
首先在app1的 AndroidManifest.xml中 HelloActivity声明中加入如下内容:<intent-filter>
<action android:name=""/>
</intent-filter>
然后就可以调用了TestActivity 中调用代码如下:Intent Intent = new Intent();intent.setClassName("org.freedom.app1", "org.freedom.app1.HelloActivity");startActivity(intent);

⑼ Android 调用手机浏览器的正确方式

intent-filter详解

前提: 本人通过手机默认浏览器及html查看器都可以成功调起本地app

调起App时,获取到html中的内容如下,该内容被封装到Intent中,并通过 intent.getData()获取(使用Uri表示),我们通过uri.getQueryParameter()获取具体字段的值。

1.当App已启动时,也可以调起app,只是获取不到Intent中的数据。我的大概理解是Android中Activity启动时通过Intent在传递数据,如果我们的Activity已经启动,没有再次获取Intent对象,android:launchMode="singleInstance";这个需要其它同学解答下。
2.为什么我把Activity启动模式设置为android:launchMode="singleInstance"?因为如果我们使用默认的standard模式,会发现被调起的app的Activity运行在浏览器的任务栈中了。这是Activity启动模式对调起App的影响。
3.有什么不足之处,希望大家指正。谢谢

热点内容
visa存储卡 发布:2025-05-15 09:35:07 浏览:619
js调用php的方法 发布:2025-05-15 09:29:13 浏览:496
android添加sdk 发布:2025-05-15 08:59:20 浏览:6
oracle数据导入sql 发布:2025-05-15 08:55:00 浏览:50
最适合做的脚本 发布:2025-05-15 08:54:27 浏览:381
太原php培训班 发布:2025-05-15 08:41:38 浏览:938
豌豆服务器地址 发布:2025-05-15 08:34:56 浏览:713
linux下php编译安装 发布:2025-05-15 08:30:37 浏览:593
c语言八进制十六进制 发布:2025-05-15 08:22:17 浏览:283
华为安卓如何更新鸿蒙 发布:2025-05-15 08:18:52 浏览:374