精华内容
下载资源
问答
  • 在需要跳转的目标安卓App的activity中添加对外的schema,示例代码如下:android:label="@7F070043"android:name="com.huawei.phoneservice.HelpCenterActivity"android:exported="true"android:excl...

    最新遇到一个需要从快应用跳转到Android App的需求,以下记录下实现的方式。在需要跳转的目标安卓App的activity中添加对外的schema,示例代码如下:

    android:label="@7F070043"

    android:name="com.huawei.phoneservice.HelpCenterActivity"

    android:exported="true"

    android:excludeFromRecents="true"

    android:launchMode="2"

    android:configChanges="0x40002D84">

    在快应用中通过system.router.push接口调用跳转,即router.push接口传入上步配置的schema:router.push({uri:"hwphoneservice://externalapp/service"})

    快应用push接口使用方法详见API文档:

    原作者:Mayism

    展开全文
  • Android2个App之间跳转

    2016-11-22 17:31:56
    Android2个App之间跳转,内涵2个Android stutio项目。
  • 安卓通过app之间跳转

    千次阅读 2017-12-21 11:16:29
    我们都知道安卓开发中经常会从当前APP跳转到另一个APP。比如支付的时候你可能从一个团购网如:大众点评,付费时跳到另一个支付APP如:支付宝。我一般都是用包名跳转,前提是你要知道你要跳转APP的包名。 通过包名...

    我们都知道安卓开发中经常会从当前APP跳转到另一个APP。比如支付的时候你可能从一个团购网如:大众点评,付费时跳到另一个支付APP如:支付宝。我一般都是用包名跳转,前提是你要知道你要跳转APP的包名。

    一.通过包名直接打开APP

    第一种

       // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
            PackageInfo packageinfo = null;
            String packagename = "com.seatrend.demo";
            try {
                packageinfo = getPackageManager().getPackageInfo(packagename, 0);
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
                Log.e("lcb", e + "  43");
            }
            if (packageinfo == null) {
                Log.e("lcb", "未安装此程序  46");
                return;
            }
            // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
            Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
            resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            resolveIntent.setPackage(packageinfo.packageName);
            // 通过getPackageManager()的queryIntentActivities方法遍历
            List<ResolveInfo> resolveinfoList = getPackageManager()
                    .queryIntentActivities(resolveIntent, 0);
            ResolveInfo resolveinfo = resolveinfoList.iterator().next();
            if (resolveinfo != null) {
                // packagename = 参数packname
                String packageName = resolveinfo.activityInfo.packageName;
                // 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]
                String className = resolveinfo.activityInfo.name;
                // LAUNCHER Intent
                startAPP(packageName, className, this);
            }
        public static void starAPP(String packagename, Context context) {
            // 这里的packname就是从上面得到的目标apk的包名
            Intent resolveIntent = context.getPackageManager().getLaunchIntentForPackage(packagename);
            // 启动目标应用
            context.startActivity(resolveIntent);
        }
        /*通过包名和类名打开APP*/
        public void startAPP(String packageName, String className) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            // 设置ComponentName参数1:packagename参数2:MainActivity路径
            ComponentName cn = new ComponentName(packageName, className);
            intent.setComponent(cn);
            intent.putExtra("keystr", "123456");
            //启动带回调的窗体,16是回调码
            startActivityForResult(intent, 16);
        }

     

    第二种

           Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            // 设置ComponentName参数1:packagename参数2:MainActivity路径
            String packageName = "com.vkelinevideo";
            ComponentName cn = new ComponentName(packageName, packageName + ".activity.SetActivity");
            intent.setComponent(cn);
            intent.putExtra("cylsh", "VIN1234567895411");
            //启动带回调的窗体,16是回调码
            startActivityForResult(intent, 16);

     

     

    	String packageName = "com.nanc.pda.vkelinevideo";
    				Intent intent = new Intent("android.intent.action.VIEW");//
                    //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    				intent.setComponent(new ComponentName(packageName, packageName + ".activity.MainActivity"));
    				intent.putExtra("jylsh", szJylsh);
    				intent.putExtra("jycs", jycs);
    				intent.putExtra("hphm", szCarNum);
    				intent.putExtra("hpzl",  hpzl);
    				//启动带回调的窗体,16是回调码
    				startActivityForResult(intent, 16);

    上面是打开APP的第二种方式,和第一种不同的是,它会新开个栈。第一种它是覆盖原APP

     

    二.进程间通讯

    2.1A程序唤醒B程序

    //查验终端调用三方测量软件的包名
    String packageName = "com.tmri.size.app";
            Intent intent = new Intent("android.intent.action.VIEW");
            intent.setComponent(new ComponentName(packageName, packageName + ".RequestAction"));
            intent.putExtra("keystr", "123456");
           //启动带回调的窗体,16是回调码
            startActivityForResult(intent, 16);

    2.2B程序接受数据

            Intent intent = getIntent();
            if (intent != null) {
                keystr = intent.getStringExtra("keystr");
                cylsh = intent.getStringExtra("cylsh");
                clsbdh = intent.getStringExtra("clsbdh");
                LogUtils.file("无锡所返回数据:" + keystr + "\n查验流水号:" + cylsh + "\n车辆识别代号:" + clsbdh);
            }

    2.3B程序发送数据

            Intent n = new Intent();
            n.putExtra("code", "1");
            n.putExtra("message", "发送成功");
            n.putExtra("keystr", keystr);
            setResult(Activity.RESULT_OK, n);
            finish();

    2.4A程序接收数据

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 16 && resultCode == Activity.RESULT_OK) {
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("接收到的数据信息:\n")
                        .append("查验流水号:").append(data.getStringExtra("cylsh")).append(",")
                        .append("车辆识别代号:").append(data.getStringExtra("clsbdh")).append(",")
                        .append("keystr:").append(data.getStringExtra("keystr"))
                        tv.setText(stringBuffer);
            }
        }

     

    三.解决applicationId和开发包名不一致

    由于一些特殊的原因在项目初始创建是的包名和上架时applicationId不一致

    跳转的方法这样写:

            String packageName = "com.kernal.passportreader.myapplication";// applicationId
            String cls="com.vkeline.pda.login.LoginActivity";//类名
            Intent intent = new Intent("android.intent.action.VIEW");
            intent.setComponent(new ComponentName(packageName, cls));
            intent.putExtra("keystr", "123456");
            startActivityForResult(intent, 16);

    判断跳转的APP是否安装

    if (getPackageManager().resolveActivity(intent, 0) == null) {
        // 说明系统中不存在这个activity
        Toast.makeText(TakePic_Activity.this,"未在手机中检测到视频插件",Toast.LENGTH_SHORT).show();
        return;
    }

     

    展开全文
  • 方式一、只知道目标app包名的情况下: 启动方: Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); intent.putExtra("param1","value1"); intent.putExtra("param2","value...

    方式一、只知道目标app包名的情况下:

    启动方:
     

    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
    intent.putExtra("param1","value1");
    intent.putExtra("param2","value2");
    context.startActivity(intent);

    接收方:

    Intent intent = getIntent();
    if (intent != null) {
        String param1 = intent.getStringExtra("param1");
        String param2 = intent.getStringExtra("param2");
        LogUtil.i("external param1 = " + param1);
        LogUtil.i("external param2 = " + param2);
    }

    方式二、知道目标app包名和指定页面名称

    启动方:

      Intent intent = new Intent();
            ComponentName componentName = new ComponentName(packageName, "xxx.xxx.SplashActivity");
            intent.setComponent(componentName);
    //        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("param1","category");
            intent.putExtra("param2","专家介绍");
            context.startActivity(intent);

    接收方不变:

    Intent intent = getIntent();
    if (intent != null) {
        String param1 = intent.getStringExtra("param1");
        String param2 = intent.getStringExtra("param2");
        LogUtil.i("external param1 = " + param1);
        LogUtil.i("external param2 = " + param2);
    }

     

    展开全文
  • 首界面为一个密码输入界面,输入密码正确后,按确定按钮,然后跳转activity。如何实现
  • APP 之间跳转实现

    千次阅读 2018-03-27 10:43:29
    在谈App内部的路由之前,先来谈谈在iOS系统间,不同App之间是怎么实现跳转的。 1. URL Scheme方式 iOS系统是默认支持URL Scheme的,具体见官方文档。 比如说,在iPhone的Safari浏览器上面输入如下的命令,会自动...

    在谈App内部的路由之前,先来谈谈在iOS系统间,不同App之间是怎么实现跳转的。

    1. URL Scheme方式

    iOS系统是默认支持URL Scheme的,具体见官方文档。

    比如说,在iPhone的Safari浏览器上面输入如下的命令,会自动打开一些App:

    // 打开邮箱 
     mailto:// 
    // 给110拨打电话 
     tel://110

    在iOS 9 之前只要在App的info.plist里面添加URL types - URL Schemes,如下图:

    IMAGE
    这里就添加了一个com.ios.Qhomer的Scheme。这样就可以在iPhone的Safari浏览器上面输入:

    com.ios.Qhomer://

    就可以直接打开这个App了。

    关于其他一些常见的App,可以从iTunes里面下载到它的ipa文件,解压,显示包内容里面可以找到info.plist文件,打开它,在里面就可以相应的URL Scheme。

    // 手机QQ
    mqq://
    
    // 微信
    weixin://
    
    // 新浪微博
    sinaweibo://
    
    // 饿了么
    eleme://

    IMAGE
    当然了,某些App对于调用URL Scheme比较敏感,它们不希望其他的App随意的就调用自己。

    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation
    {
        NSLog(@"sourceApplication: %@", sourceApplication);
        NSLog(@"URL scheme:%@", [url scheme]);
        NSLog(@"URL query: %@", [url query]);
    
        if ([sourceApplication isEqualToString:@"com.tencent.weixin"]){
            // 允许打开
            return YES;
        }else{
            return NO;
        }
    }

    如果待调用的App已经运行了,那么它的生命周期如下:

    IMAGE

    如果待调用的App在后台,那么它的生命周期如下:

    IMAGE

    明白了上面的生命周期之后,我们就可以通过调用application:openURL:sourceApplication:annotation:这个方法,来阻止一些App的随意调用。

    IMAGE

    ![IMAGE](quiver-image-url/CBED38D2D585CE63B428FAADE844D7A4.jpg =1240x698)

    如上图,饿了么App允许通过URL Scheme调用,那么我们可以在Safari里面调用到饿了么App。手机QQ不允许调用,我们在Safari里面也就没法跳转过去。
    关于App间的跳转问题,感兴趣的可以查看官方文档Inter-App Communication

    App也是可以直接跳转到系统设置的。比如有些需求要求检测用户有没有开启某些系统权限,如果没有开启就弹框提示,点击弹框的按钮直接跳转到系统设置里面对应的设置界面。
    iOS 10 支持通过 URL Scheme 跳转到系统设置 iOS10跳转系统设置的正确姿势 关于 iOS 系统功能的 URL 汇总列表

    2. Universal Links方式

    虽然在微信内部开网页会禁止所有的Scheme,但是iOS 9.0新增加了一项功能是Universal Links,使用这个功能可以使我们的App通过HTTP链接来启动App。
    1.如果安装过App,不管在微信里面http链接还是在Safari浏览器,还是其他第三方浏览器,都可以打开App。
    2.如果没有安装过App,就会打开网页。
    具体设置需要3步:
    1.App需要开启Associated Domains服务,并设置Domains,注意必须要applinks:开头。

    IMAGE

    2.域名必须要支持HTTPS。

    3.上传内容是Json格式的文件,文件名为apple-app-site-association到自己域名的根目录下,或者.well-known目录下。iOS自动会去读取这个文件。具体的文件内容请查看官方文档

    IMAGE

    如果App支持了Universal Links方式,那么可以在其他App里面直接跳转到我们自己的App里面。如下图,点击链接,由于该链接会Matcher到我们设置的链接,所以菜单里面会显示用我们的App打开。

    IMAGE

    在浏览器里面也是一样的效果,如果是支持了Universal Links方式,访问相应的URL,会有不同的效果。如下图:

    IMAGE

    以上就是iOS系统中App间跳转的二种方式。

    从iOS 系统里面支持的URL Scheme方式,我们可以看出,对于一个资源的访问,苹果也是用URI的方式来访问的。

    统一资源标识符(英语:Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。URI的最常见的形式是统一资源定位符(URL)。

    举个例子:

    IMAGE

    这是一段URI,每一段都代表了对应的含义。对方接收到了这样一串字符串,按照规则解析出来,就能获取到所有的有用信息。
    这个能给我们设计App组件间的路由带来一些思路么?如果我们想要定义一个三端(iOS,Android,H5)的统一访问资源的方式,能用URI的这种方式实现么?

    节选: iOS 组件化 —— 路由设计思路分析 - 掘金.html
    作者:饿了么物流移动团队
    链接:https://juejin.im/post/5ab85a346fb9a028e52dd16e
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 当前App跳转其他App PackageManager packageManager = getPackageManager(); Intent intent = new Intent(); intent =packageManager.getLaunchIntentForPackage("com.example.abc2"); //这里面的值是你要跳转app的...
  • Android两个App之间跳转的方法

    千次阅读 2016-10-18 10:01:18
    最近的开发中遇到一个问题,需要在一个App中开启另一个App进行一些操作,经过几天的研究,有了一些进展,现在分享给大家。  第一种方法,使用Intent的隐式启动,通过设置Action去开启另一个App,如下例,先创建一个...
  • 1.Activity之间跳转 由aAcitivity跳转到bActivity,并传值Intent it = new Intent(); it.putExtra("aa", aCode); it.putExtra("bb", bCode); it.setClass(aActivity.this, bActivity.class); startActivity(it);在...
  • H5页面唤醒AppApp之间跳转

    千次阅读 2017-09-06 11:40:49
    H5页面跳转App,其实质是通过uri。 Android配置: 清单文件中对应的Activity标签添加以下标签属性 <action android:name="android.intent.action.VIEW" /> <category android:name="android.inten
  • 想要实现app之间的相互跳转,很简单,只需要下面这几步!!!! 一、判断是否安装所需app(已安装直接开启,未安装进行下载) 二、触发拉起app的方法 下面,我们详细介绍: 1、判断是否安装所需app 如已知app包名...
  • app之间跳转与传值

    2018-11-21 10:47:00
    传值: 1.A打开B时,B的启动方式不能是singInstence和singTask,这两种会在打开页面时就调用onActivityResult方法并且此时的resultcode为0,data为null。...跳转跳转分为隐式与显示两种, a.显示调...
  • android app跳转到微信

    千次阅读 2017-12-12 13:48:28
    android app跳转到微信
  • Andorid App之间跳转

    2017-12-25 22:42:55
    不同APP之间跳转安卓ap之间跳转,方式其实挺多, 方式一: Intent intent = new Intent(); intent.setAction("XXX,XXX,XXX"); 此处填 intent.putExtra("data", "data"); startActivity(intent); manifest中...
  • 有时候在跳转到其它平台的APP的时候发现没有安装,如果没有安装怎么直接跳转到应用平台该APP的下载界面呢?下面为代码:以微信为例: try { Uri uri = Uri.parse("market://details?id=" + "com.tencent.mm"); //...
  • Android APP内部跳转到微信

    千次阅读 2017-11-07 11:23:30
    最近公司APP需要内部跳转到微信应用,简单写了个demo。测试了下。
  • Android 两个APP跳转

    千次阅读 2018-11-21 23:29:51
    通过intent实现不同APP跳转 通过了解APP间的跳转,加深对于intent的理解 首先需要APP1和APP2,然后在APP1中activity中添加一个点击事件,希望跳转APP2的activity中。 APP1跳转代码: Intent intent = new Intent...
  • Intent intent2 = new Intent(); intent2 = getPackageManager().getLaunchIntentForPackage("...); //这行代码比较重要 ...android.intent.action.VIEW"); startActivity(intent2); pr...
  • uni-app 页面跳转

    万次阅读 多人点赞 2018-08-20 15:25:56
    今天看Dcloud官网更新了个uni-app,据说一套代码三端发布(Android,iOS,微信小程序),果断一试。 uni.navigateTo(OBJECT) 保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。 ...
  • Unity安卓app跳转

    2018-10-12 15:08:45
    一个主app作为启动程序,跳转到其他app,其他app需要隐藏app图标。 跳转代码: private void ChangeIntent() { AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); ...
  • android两个app实现跳转

    2016-06-06 14:55:39
    该案例用语描述不同app之间的activity跳转
  • android app跳转淘宝客户端店铺

    万次阅读 2015-11-10 20:29:30
     根据这篇文章的介绍,同样也是在找如何从自己写的APP跳转到原生淘宝APP。里面的思路是通过Intent 隐式跳转到淘宝原生APP上面。但是intent隐式跳转你得知道淘宝App的包名,所以就得去反编译。结果下载下来淘宝APP...
  • Android APP跳转微信小程序 微信开放文档链接 MINIPROGRAM_TYPE_PREVIEW:体验版. MINIPROGRAM_TYPE_TEST:开发版 MINIPTOGRAM_TYPE_RELEASE:正式版 String appId = "wxd930ea5d5a258f4f"; // 填应用AppId IWXAPI ...
  • h5向原生安卓app跳转

    2021-04-07 14:06:37
    window.navigator.userAgent.toLowerCase().indexOf(“ckandroid”) != -1 这是判断当前是否是在安卓App端打开还是浏览器打开 ...跳转传参:window.location.href = ‘app://hubenka.android.web?参数=参数值’ ...
  • 两个App之间进行跳转与传值

    千次阅读 2016-11-28 14:23:56
    我们平常都是activity之间通过intent跳转。有的时候页面的展示通过html5,最近我们公司出现了一个新的需求,公司按业务的不同分别做了几个系统,在这些系统之间还是有一些共通性,就想要实现几个系统的传递交互。就是...
  • 两个APP之间跳转

    2018-06-06 19:24:59
    跳转方法有下面两种,我以前一直用的方法二来判断的,但是今天突然[[UIApplication sharedApplication] canOpenURL:url]方法判断手机上是否安装淘宝失败了,无论是否安装都返回YES,后来换了方法一才能正常判断。...
  • 首先如果你需要隐藏你要从另一个应用启动的app的桌面图标,需要将一下代码注掉 要想在桌面不显示图标,只需注释掉APP入口Activity中的下面这句...跳转的目标app还需要配置以下代码 :其中scheme是自己定义好的    
  • Android开发过程中,点击App里面的控件进行网页跳转是经常会遇到的需求,但是Android的网页跳转有两种方式实现App点击控件跳转到网页,第一种就是App里面的代码根据网址链接进行网页跳转,第二种就是根据Webview...
  • 1.简单的从一个app跳转到另一个app 直接用intent就可以实现。 只要知道目标activity的包名和类名就可以直接跳转了。 /** * 方法1:intent的显式跳转 */ private fun jumpDemo2() { val intent = Intent() ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,547
精华内容 34,618
关键字:

安卓app之间的跳转