Android启动应用相关知识

原创 2016年08月30日 11:02:14

GitHub源码

根据包名启动应用

    private void startAppByPkgName(String pkgName){
        Intent intent =null;

        intent = mContext.getPackageManager().getLaunchIntentForPackage(pkgName);

        if(intent != null){
            mContext.startActivity(intent);
        }
    }

根据Uri启动应用

    /**
     * 打开应用
     * @param activity
     * @param intent
     */
    public static boolean openApp(Activity activity, Intent intent) {
        try {
            activity.startActivityIfNeeded(intent, -1);
            return true;
        } catch (ActivityNotFoundException ex) {
            ex.printStackTrace();
        } catch (SecurityException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    /**
     * 通过url启动应用
     * @param activity
     */

    public static boolean startActivityByUrl(Activity activity){
        //启动电话
        //String url = "tel:123456789";
        //如果安装了唯品会应用,启动唯品会
        String url = "vipshop://goHome?f=fx&tra_from=tra%3Awvpeo8om%3Anm5fj2y6%3Aq15uwfdz%3Agtpgmchu%3A%3A4gl0mmyi%3A%3A3739c1c4dd4d4e78889982e23609e056";
        Intent intent = null;
        try {
            intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

        if(activity.getPackageManager().resolveActivity(intent, 0) != null){
            return openApp(activity, intent);
        }else{
            String packagename = intent.getPackage();
            if (packagename != null) {
                intent = new Intent(Intent.ACTION_VIEW, Uri
                        .parse("market://search?q=pname:" + packagename));
                intent.addCategory(Intent.CATEGORY_BROWSABLE);
                try {
                    activity.startActivity(intent);
                } catch (ActivityNotFoundException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return true;
            } else {
                return false;
            }
        }
    }
版权声明:转载请注明出处

Android产品研发(十一)-->应用内跳转Scheme协议

上一篇文章中我们讲解了在Android App的实际开发中,尽量不在静态变量、全局变量中保存数据,这是因为App的进程可能是不安全的,在部分手机中其有可能被系统杀死,从而造成静态全局变量重新初始化。而...

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

通过用手机的浏览器(内置,第三方都可)访问一个网页,实现点击一个链接启动自己的应用,并传递数据。 首先在Mainifest文件里面对要启动的Activity添加一个过滤器。 ...

android小应用和相关知识的源码

  • 2012年11月24日 04:17
  • 10.87MB
  • 下载

Android应用程序签名相关的理论知识

本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。 1、什么是签名?       如果这个问题不是放在Android开发中来问,如果...

关于Android自启动管理的相关知识点

1.自启动的实现 1.添加权限。 2.在xml文件里,静态注册广播接收器。 3.实现具体自启动广播接收器类代码。 2.发送BOOT_COMPLETED广播 3.接收不到BOOT_COMPLET...
  • pvlking
  • pvlking
  • 2015年10月14日 09:16
  • 3464

Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名

本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。 1、什么是签名?       如果这个问题不是放在Android开发中来问,...

Android6.0的phone应用源码分析(2)——phone相关进程启动分析

1.1   PhoneApp启动 PhoneApp进程是在系统开机时启动的,和其他的很多服务应用或Activity一样,它是由AMS在SystemReady后启动的。其AndroidManifest...

android应用程序启动详情之进程相关

当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。 默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 ...

Android6.0 旋转屏幕(五)WMS启动应用流程(屏幕方向相关)

 一、强制设置方向 1.Activity 如果要强制设置一个Activity的横竖屏可以通过Manifest去设置,跟Activity相关的信息都会保存在ActivityInfo当中。 a...

电脑相关精华知识及应用文章

  • 2010年01月26日 21:41
  • 2.03MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android启动应用相关知识
举报原因:
原因补充:

(最多只允许输入30个字)