精华内容
下载资源
问答
  • 从app或web链接打开另一个app
    千次阅读
    2019-01-23 23:55:45

    总共有3种情况
    一,从App A跳转到App B
    示例1:
    从一个 APP A 跳转到另一个 APP B的某个activity 例如DemoActivity
    App A开启跳转的代码如下( 前提:知道要跳转应用的包名、完整的类名)

    Intent intent = new Intent();
    //前提:知道要跳转应用的包名、类名
     ComponentName componentName = new ComponentName("com.shangmi.demo", "com.shangmi.demo.DemoActivity");
    Bundle bundle=new Bundle();
    bundle.putInt("key",i++);
    intent.putExtras(bundle);
    intent.setComponent(componentName);
    startActivity(intent);
    

    APP B的DemoActivity配置如下:

    android:exported="true"
    

    在 AnroidManifest 文件中给 DemoActivity节点设置 android:exported=“true”,该属性表示当前 activity 能否被另外一个Application 的组件启动,true允许启动,false不允许。默认是false

    APP B的DemoActivity获取数据方式如下:
    直接在onCreate()方法里面获取(DemoActivity为标准启动模式)

    Intent intent=getIntent();
      if (intent!=null) {
          Bundle bundle=intent.getExtras();
          if (bundle!=null) {
               int value=bundle.getInt("key");
               et.setText(value+"");
            }
       }
    

    这里注意下 如果DemoActivity是singleTask/singleInstance启动模式,在DemoActivity没有关闭
    的情况,第2次重复开启DemoActivity,就应该在如下方法里面获取数据:

     @Override
     protected void onNewIntent(Intent intent) {
     super.onNewIntent(intent);
     if (intent!=null) {
        Bundle bundle=intent.getExtras();
        if (bundle!=null) {
              int value=bundle.getInt("key");
               et.setText(value+"");
               }
            }
        }
    

    二,从App A或者外部链接 跳转到App B的DemoActivity
    App B的DemoActivity在清单文件AndroidManifest中配置如下:

    <activity android:name=".DemoActivity">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
         //系统默认添加的,一定要如下配置
        <category android:name="android.intent.category.DEFAULT" />
          //想被浏览器web链接激活,一定要如下配置
         <category android:name="android.intent.category.BROWSABLE" />
         <data
             android:host="main"
               android:scheme="app" />
      </intent-filter>
     </activity>
    

    App A激活的话:代码如下:

     Intent intent = new Intent(Intent.ACTION_VIEW);
     intent.addCategory(Intent.CATEGORY_BROWSABLE);
     intent.setData(Uri.parse("app://main"));
     //这里Intent当然也可传递参数,但是一般情况下都会放到上面的URL中进行传递
     intent.putExtra("", "");
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     startActivity(intent);
    

    如果是web链接激活的话:代码如下(通过web.html中的A标签来操作)

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>html页面</title>
    </head>
    <body>
      <h1>测试通过约定scheme,在浏览器中激活app B</h1>
      <a href="app://main/abc">点我激活DemoActivity</a>
    </body>
    </html>
    

    App B的DemoActivity获取数据的方式如下:

    Intent intent=  getIntent();
    //获取完整的数据
    String dataString = intent.getDataString();
    Uri uri = intent.getData();
     if (uri != null) {
          //完整的url信息
           String url = uri.toString();
           //scheme部分数据
           String schemes = uri.getScheme();
            //host部分数据
           String host = uri.getHost();
     }
    

    三,通过已知的包名 跳转到App B的DemoActivity(其实通过包名打开的是App B的launcher界面,launcher界面接受到数据后跳转到DemoActivity)
    激活的代码如下:

    Intent intent=getPackageManager().getLaunchIntentForPackage("com.shangmi.demo");
      if (intent!=null) {
        i++;
        Bundle bundle=new Bundle();
        bundle.putInt("key",i);
        intent.putExtras(bundle);
        // intent.putExtra("bundleKey",bundle);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        }
    

    App B的DemoActivity中获取数据的方式和第一种情况 是一样

    结尾:如果有帮助到你,就请你点赞关注一下啦

    更多相关内容
  • Android 在一个APP打开另一个APP

    千次阅读 2020-06-06 10:54:05
    不知道你们有没有注意过,每次打开一些软件的时候都会有广告引导页,有时候手滑点到了,会有进入手机上的另一个APP,这有没有引起你的注意呢? 正文 为了测试这个功能,首先要创建两个项目,然后运行起来都安装在你...

    前言

    不知道你们有没有注意过,每次打开一些软件的时候都会有广告引导页,有时候手滑点到了,会有进入手机上的另一个APP,这有没有引起你的注意呢?

    运行效果图
    在这里插入图片描述

    正文

    为了测试这个功能,首先要创建两个项目,然后运行起来都安装在你的手机上,这里为了方便了解,取名就是应用A和应用B,流程就是A应用里面打开B应用。

    首先当然是创建项目了
    DemoA
    在这里插入图片描述
    DemoB

    在这里插入图片描述
    创建好之后,别的先不管,都在手机上安装一下再说
    在这里插入图片描述

    ① 打开另一个APP

    接下来在DemoA的MainActivity里面写一个按钮,用于点击之后打开DemoB应用

    	<Button
            android:id="@+id/btn_open_b"
            android:text="打开DemoB"
            android:textAllCaps="false"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    

    在这里插入图片描述
    也在DemoB的布局文件改一下显示内容

    <TextView
            android:textSize="18sp"
            android:textColor="#000"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="DemoB" />
    

    运行一下
    在这里插入图片描述

    这样就打开了。那假如我要传递数据到DemoB呢?

    ② 数据传递

    传数据其实就跟平时单个APP内部不同页面传数据类似,也是用Intent
    在这里插入图片描述
    然后在另一个APP里面接收并显示出来。现在先修改一下DemoB的布局,增加一个TextView用来显示接收的内容。

    <TextView
            android:id="@+id/tv_info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12dp"
            android:textColor="#000"
            android:textSize="16sp" />
    

    DemoB的MainActivity里
    在这里插入图片描述
    一旦两个应用程序里面改动了代码你就要在手机上运行一下,否则你改动的代码就不会生效

    然后运行一下:
    在这里插入图片描述

    传值的问题就解决了。

    ③ 打开指定页面

    通过包名跳转APP是进入默认的启动页面,你可以打开你的AndroidManifest.xml文件查看
    在这里插入图片描述
    那个Activity下面有这个默认启动就是那个

    			<intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
    

    至于要打开指定的页面有两个方法

    1.通过包名、类名

    首先在DemoB的下面再创建一个TestActivity,简单加一个TextView
    在这里插入图片描述

    在这里插入图片描述
    因为是要DemoB的TestActivity页面,所以这个activity在AndroidManifest.xml中需要配置

    android:exported 属性,布尔类型,是否支持其他应用访问目标 Activity,默认值为 true;

    android:exported="true"
    

    否则你跳转会报错的,现在运行DemoB,使改动的代码生效
    然后修改DemoA里面MainActivity的代码
    在这里插入图片描述
    运行效果
    在这里插入图片描述
    这样就可以了。

    2.通过Action

    修改DemoB的AndroidManifest.xml
    在这里插入图片描述
    然后运行在手机上,再修改DemoA的MainActivity
    在这里插入图片描述
    运行效果
    在这里插入图片描述
    其实还有一种方式是通过URL打开另一个APP,但是我不推荐这样做,为什么?没有原因…

    展开全文
  • Android 一个app启动另一个app

    热门讨论 2014-09-12 16:08:11
    一个app启动另一个app,这个玩法挺火的嘛,有没有试过更新QQ到5.1版本,QQ的健康里面就可以添加其他app,实现QQ跳转到其他app应用,这里模拟写了一个demo
  • 本文主要介绍,uniapp开发,在app打开新的App,以微信为例。 handleGoApp() { if (plus.os.name == 'Android') { //安卓 if ( plus.runtime.isApplicationExist({ //查看安卓系统手机有没有下载这款...

    本文主要介绍,uniapp开发,在app中打开新的App,以微信为例。

    handleGoApp() {
    	if (plus.os.name == 'Android') {
    		//安卓
    		if (
    			plus.runtime.isApplicationExist({
    				//查看安卓系统手机有没有下载这款app
    				pname: 'com.tencent.mm' //微信app云打包的包名
    			})
    		) {
    			//安装了app
    			plus.runtime.openURL(
    				'weixin://',
    				function(res) {
    					console.log(res);
    				}
    			);
    		} else {
    			//未安装app
    			uni.showModal({
    				title: '提示',
    				content: '您还没有此APP,去下载',
    				success: function(res) {
    					if (res.confirm) {
    						plus.runtime.openURL('https://a.app.qq.com/o/simple.jsp?pkgname=com.tencent.mm', function(res) {
    							console.log(res);
    						});
    					} else if (res.cancel) {
    						console.log('用户点击取消');
    					}
    				}
    			});
    		}
    	} else if (plus.os.name == 'iOS') {
    		//苹果
    		//因为ios查不到B款app在ios系统手机里面,其实下载了,也是检测不到,所以就不检测了
    		//直接打开微信app,微信pp没有的话,会进入回调报错,我们在回调去打开下载链接
    		plus.runtime.launchApplication(
    			{
    				action:
    					'weixin://'
    			},
    			function(e) {
    				uni.showModal({
    					title: '提示',
    					content: '您还没有此APP,去下载',
    					success: function(res) {
    						if (res.confirm) {
    							plus.runtime.openURL('https://a.app.qq.com/o/simple.jsp?pkgname=com.tencent.mm', function(res) {
    								console.log(res);
    							});
    						} else if (res.cancel) {
    							console.log('用户点击取消');
    						}
    					}
    				});
    			}
    		);
    	}
    },
    
    展开全文
  • 1、一个app跳转另一个app,并且传递参数,用到scheme跳转。 2、一个app体量太大,想把一部分功能单独作为模块开发,可以在主app里面使用scheme跳转到模块app里面(模块app里面不设置启动页,则不会显示)。 简单...

    说明:

    scheme 两个主要功能

    1、一个app跳转另一个app,并且传递参数,用到scheme跳转。

    2、一个app体量太大,想把一部分功能单独作为模块开发,可以在主app里面使用scheme跳转到模块app里面(模块app里面不设置启动页,则不会显示)。

     

    简单实现:

    1、App1 使用scheme调用App2

    点击按钮调用这个函数即可

    Uri uri = Uri.parse("bocmcht://payresult/mobile?jsonData=123");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);

    2、App2接收App1的参数

    1)现在AndroidManifest.xml中配置类的接收参数

    <!--BOC中国银行-->
            <activity
                android:name=".BOCPayResultHandler"
                android:launchMode="singleTask"
                android:taskAffinity="com.baofu.sdkweb">
    
                <intent-filter>
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <data android:scheme="bocmcht" android:host="payresult" android:path="/mobile"/>
                </intent-filter>
            </activity>

    2)类里面获取值 

    public class BOCPayResultHandler extends Activity {
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            //bocmcht://payresult/mobile?jsonData=123
    
            Uri uri = getIntent().getData();
            String scheme = uri.getScheme();// 打印:bocmcht
            String host = uri.getHost();//打印:payresult
            String path = uri.getPath();//打印:/mobile
            String queryString = uri.getQuery();//打印:jsonData=123
            Log.e("中国银行", scheme + "..." + host + "..." + "..." +path + "..." + queryString);
        }
    }
    

    3、判断scheme是否有效

        /**
         * 判断中国银行是否安装 - 2
         *
         * @return
         */
        public static boolean checkUrlScheme(Activity activity) {
            Uri uri = Uri.parse("bocpay://www.boc.cn/mobile?param=**");//scheme
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    
            PackageManager packageManager = activity.getPackageManager();
            List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
            return !activities.isEmpty();
        }   

    详细介绍:

    1、参数:调用时候的url

    "bocmcht://payresult/mobile?jsonData=123"

     对应:

    <scheme>://<host>:<port>/<path>?query

    解释:scheme是bocmcht,host是payresult,path是mobile,query是:jsonData=123"

    下面是一个完整的demo(多了一个port)

    content://com.example.project:200/folder?jsonData=123

    解释:scheme是content,host是com.example.project,port是200,path是folder,query是:jsonData=123

    2、接收:AndroidManifest.xml中配置

    配置中只需要配置:scheme、host、port、path 即可,可单个配置,也可多个配置

    • 如果intent-filter中只指定了scheme,那么所有带有该sheme的URI都能匹配到该intent-filter。
    • 如果intent-filter中只指定了scheme和authority(authority包括host和port两部分)而没有指定path,那么所有具有相同scheme和authority的URI都能匹配到该intent-filter,而不用考虑path为何值。
    • 如果intent-filter中同时指定了scheme、authority和path,那么只有具有相同scheme、authority和path的URI才能匹配到该intent-filter。

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

    3、h5网页中通过scheme打开app

    移动浏览器H5页面通过scheme打开本地应用:https://blog.csdn.net/u012246458/article/details/83787854

     

     

    参考文章:

    展开全文
  • Android 在一个APP打开另一个APP

    千次阅读 2019-03-30 18:13:52
    Android 在一个APP打开另一个APP 首先,第一步,我们要下载那个要打开app,要安装。 然后我们需要根据它的包名才能进行跳转。 怎么知道它的包名呢? 我的第一个想法,先下载APK.然后解压。 看到熟悉的...
  • uni-app打开另一个app如何实现?

    千次阅读 2020-06-15 11:46:33
    公司有一个需求,是在我们的app1中有个按钮,点击会打开我们的app2。 在uniapp的文档中我找到了怎么去实现。 首先贴出我参考的3个文档 ①uni-app 中如何打开外部应用,如:浏览器、淘宝、AppStore、QQ等 ...
  • Android APP打开另一个APP完整逻辑实现

    万次阅读 多人点赞 2018-05-09 18:12:03
    一丶概述前段时间配合开发,完成了一个APP拉起另一个APP的需求,负责接收数据跨登录部分。当然整个实现思路挺感兴趣就了解一下。先说说需求拉起另一个APP是为了方便统一使用管理,有些公司APP较多,部分人只需要用到...
  • 假如你开发了2个App,怎么其中一个App打开另一个呢?首先在自己要被打开的app的info.plist中自定义url types.如图所示   然后在另一个app中的响应事件中如此编写代码: NSURL *url =
  • 从一个APP启动另一个APP的Activity的方法1、通过自定义action启动这种方式只需要在代码中设置一个action即可, 系统会自动过滤去找到这个action所对应的Activity 当前APP的代码Intent intent = new Intent(); //这里...
  • iOS 一个APP打开另一个APP

    千次阅读 2016-05-03 23:19:43
    iOS 一个APP打开另一个APP
  • 场景:两个APP一个是自己做的APP1,一个是安卓市场下载的APP2;两个WIFI,信息均已知。 目的:APP1打开时,连接到了WIFI1,APP1中有接口可以切换到APP2,但APP2需要连接WIFI...问题是:我如何判断从另一个APP返回了?
  • 目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能。本篇文章讲的就是打开别人的APP的一些知识。...建立这个工作空间主要是为了让我们后面建立的两个工程能在一个Xcode页面上管理,方便讲解
  • 程序在运行过程中,可能会由于某种原因而被干掉或者自己崩溃掉,为了增加可靠性,一般的做法就是在系统启动之后,自动起一个看门狗程序,来时刻看守应用程序。 由于本人对android也不是很精通 所以想到了以下办法,...
  • Android之APP唤起另一个APP

    千次阅读 2019-03-14 17:18:18
    在此记录一个APP拉起另一个APP的需求,虽然领导说:不要唤起,直接合并!(额。。。,好吧) 至于合并,咱们回来再谈吧。 A拉起B可实现方法: 1.使用包名,特定Activity名拉起: A中:跳转处 Intent intent = ...
  • 1. Android 从一个 APP 跳转到另一个 APP 主界面 Intent intent = new Intent(Intent.ACTION_MAIN); //前提:知道要跳转应用的包名、类名 ComponentName componentName = new ComponentName("...
  • 直接上解决方案: 在项目Info.plist文件中添加如图所示字段...文件拷贝到咱们App了,咱们需要处理一下(要么存本地,要么直接预览)我的处理是存本地.上代码: - (BOOL)application:(UIApplication *)app openURL:(N...
  • 打开另一个APP(URL Scheme与openURL)

    千次阅读 2018-01-30 21:19:46
    目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能。本篇文章讲的就是打开别人的APP的一些知识。...建立这个工作空间主要是为了让我们后面建立的两个工程能在一个Xcode页面上管理,方便讲解和管理。挺简单
  •  最近公司需要将原来的app和现在的app合并(主要是为了用原来的功能),先说一下思路,分成一个主module和一个附module,其实就是一个app添加一个library,下面总结一下遇到的错。 将附module添加为library 1.首先...
  • iOS App 唤醒另一个App

    千次阅读 2016-08-21 17:55:23
    iOS App 唤醒另一个App 网上也有讲这块的,感觉讲得都不是很好。而且有一些细节根本没有讲清楚。这里重写整理一下相关知识点。 主要内容 URL Scheme 是什么?项目中关键的配置注意事项 URL Scheme 是什么? iOS...
  • 一个应用打开另一个应用
  • 使用aapt //aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 1.以微信为例,命令行中切换到aapt.exe目录执行:aapt dump badging E:\Android\weixin531android460.apk 2.运行后的结果如下(仅截取部分): ...
  • 最近在开发一个APP交互时,遇到这样的需求,1、APP拉起第三方的APP,并且传值,2第三方APP拉起我们的APP,并可以根据传递过来的值启动相对应的页面。 我们通过Intent的隐式启动来拉起。 隐式启动拉起第三方APP有三...
  • 被启动指定的Activity 在AndroidMenifest.xml中要暴露入口,以便app 能够启动,不暴露入口,会报权限错误,不能正常启动 被启动的Activity暴露入口方式, android:exported="true" ,默认值是false     ...
  • 以前支付宝发短信给你手机 ,然后你点开这链接的时候会发现它自动的打开了支付宝软件 ,这是如何做到的呢 ? 其实这主要的工作还是在链接js上的处理,app所要的操作就是很简单的,在android中的intent-...
  • 首先如果你需要隐藏你要从另一个应用启动的app的桌面图标,需要将一下代码注掉 要想在桌面不显示图标,只需注释掉APP入口Activity中的下面这句即可,或者把下面的LAUNCHER改成DEFAULT也行  --> 跳转的目标...
  • 安卓开发由一个APP拉起另一个APP的方法总结

    万次阅读 多人点赞 2017-08-04 12:36:51
    安卓开发由一个APP拉起另一个APP的方法总结 本文为本人原创首发,转载请标明出处:http://blog.csdn.net/zang_chen/article/details/76677846,本文出自陈小二来巡山的博客 最近公司在对接第三方应用的时候有两个...
  • 从一个App跳转到APP

    千次阅读 2016-06-18 10:41:43
    应用场景: 百度地图等 第三方支付 第三方分享登陆下面先说几个概念性东西: 1 URL :统一资源定位符(可以没有路径但是必须要有协议头)...并且在iOS中打开一个应用程序只要能拿到这个应用程序协议头即可iOS 从一个...
  • Android在一个APP中通过包名或类名启动另一个APP

    万次阅读 多人点赞 2014-07-24 19:05:48
    开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 883,435
精华内容 353,374
关键字:

从一个app打开另一个app