zoukankan      html  css  js  c++  java
  • android一个app打开另一个app的指定页面

    一个app打开另一个app的指定页面方法 有以下几种  

         1、通过包名、类名

         2、通过intent的 action

         3、通过Url

      方案1、

    ComponentName componentName = new ComponentName("com.example.bi", "com.example.bi.SplashActivity");//这里是 包名  以及 页面类的全称
                    Intent intent = new Intent();
                    intent.setComponent(componentName);
                    intent.putExtra("type", "110");  
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
    1.在Activity上下文之外启动Activity需要给Intent设置FLAG_ACTIVITY_NEW_TASK标志,不然会报异常。 
    2.加了该标志,如果在同一个应用中进行Activity跳转,不会创建新的Task,只有在不同的应用中跳转才会创建新的Task

    方案2、

    在目标Activity的配置文件中添加具体的action

    <!--ACTION启动配置-->
                <intent-filter>
                    <action android:name="com.example.bi" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
    Intent intent = new Intent();
                    intent.setAction("com.example.bi");
                    intent.putExtra("type", "110");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

    方案3、

    <!--URL启动启动配置-->
                <intent-filter>
                    <data
                        android:host="com.example.bi"
                        android:path="/cyn"
                        android:scheme="csd" />
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                </intent-filter>
    Intent intent = new Intent();
                    intent.setData(Uri.parse("csd://com.example.bi/cyn?type=110"));
                    intent.putExtra("", "");//这里Intent当然也可传递参数,但是一般情况下都会放到上面的URL中进行传递
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

      判断要打开的app是否安装:

    public static boolean isApkInstalled(Context context, String packageName) {
            if (TextUtils.isEmpty(packageName)) {
                return false;
            }
            try {
                ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
                return true;
            } catch (NameNotFoundException e) {
                e.printStackTrace();
                return false;
            }
        }

     

  • 相关阅读:
    Hibernate课程 初探一对多映射3-1 单向多对一简介
    Hibernate课程 初探一对多映射2-8 set元素属性
    Hibernate课程 初探一对多映射2-7 测试-修改和删除学生信息
    vue.js源码学习分享(二)
    vue.js源码学习分享(一)
    用百度地图做了一个输入地址查询经纬度的小例子
    今天碰到的400错误
    ajax同步
    json键的不能像值一样拼写的问题
    日期格式化
  • 原文地址:https://www.cnblogs.com/bimingcong/p/10409914.html
Copyright © 2011-2022 走看看