Android打开其它APP的两种方式

在实际开发中,或许我们会需要打开一个别的APP,下面介绍下Android如何在自己的应用里面打开其它的应用。

方式1:如果我们知道包名和默认启动的Activity,可以用如下方式打开:

 

Intent intent = new Intent();
ComponentName cn = new ComponentName("packageName", "默认启动的activity");
intent.setComponent(cn);
startActivity(intent);


举例:

Intent intent = new Intent();
ComponentName cn = new ComponentName("com.example.demo", "com.example.demo.MainActivity");
intent.setComponent(cn);
startActivity(intent);

上述代码会打开一个包名为:com.example.demo,默认启动Activity为com.example.demo.MainActivity的APP

 

这种方式比较简单,但是实际上我们都不会知道要打开的APP的包名,更不会知道要打开的APP的默认启动Activity,下面我们上演另外一种打开其它APP方式。

 

方式2:在不知道应用包名,也不知道默认启动Activity的情况下,打开一个APP

(1)第一步是获取要打开的APP的包名,一个APP的包名可以通过如下代码获取

 

private void getAppInfo(Context context) throws Exception{
        PackageManager packageManager = context.getPackageManager();
        //获取所有安装的app
        List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
        for(PackageInfo info : installedPackages){
            String packageName = info.packageName;//app包名
            ApplicationInfo ai = packageManager.getApplicationInfo(packageName, 0);
            String appName = (String) packageManager.getApplicationLabel(ai);//获取应用名称
        }
    }

(2)第二步通过获取的APP名称,可以找出对应的APP包名,这样我们就知道了一个APP的包名,下面通过包名打开APP

 

public static void openApp(Context context, String packageName) {
        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        context.startActivity(intent);
    }

方式3:通过scheme配置,启动activity,代码配置如下

<activity
            android:name=".demo.DemoActivity"
            android:screenOrientation="portrait">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data
                    android:host="demo_ac"
                    android:scheme="demo" />
            </intent-filter>
        </activity>
public static void startActivity(Context context, String intentUrl){
        final Intent intent = initIntent(intentUrl);
        context.startActivity(intent);
    }

    private static Intent initIntent(final String uriString) {
        final Intent intent = new Intent();
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(uriString));
        return intent;
    }
使用
startActivity(context,"demo://demo_ac")


至此在不知道APP包名和默认启动Activity的情况下,完成打开APP

 

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
APP用于教师对课堂的管理,有学生和教师两种身份,教师同担任管理员。教师通过APP进行发布签到、作业、讨论等,并且管理学生账号以及课堂增删等管理工作;学生可以进行签到、提交作业,发表讨论等操作。 (1)首先设计注册登录页面,打开软件会现一个包含“登录”和“注册”两个按钮的界面,登陆界面和注册界面的输入框相同。其中教师的账号名为工号,学生的账号名为学号,方便管理。 (2)学生端:学生端分为首页、我的课程、个人中心 1)首页:首页包括搜索框,以及各种课程的分类框。可以在首页搜索框搜索课程,进行课程的添加;也可以在自己感兴趣的分类中查找自己感兴趣的课程,进行课程的添加。点击每个课程,都会看到课程的相关介绍。 2)我的课程:我的课程显示已选课程,点击已选课程,显示课程简介、任课老师、班级学生人数等基本信息。进入某一已选课程,其学习分为三部分:签到、讨论、测评。 签到框代替了教师上课的点名,根据教师发布签到的形式进行签到,签到界面会显示签到的有效间,签到完成后显示签到记录; 讨论区显示教师发布的各个讨论话题,点入某一话题可以进行讨论;在该讨论区还可以进行资源的上传与下载; 测评框显示老师布置的作业以及考核,并显示完成截止间,点击某一布置的作业,则可进入进行作业的完成,完成后进行提交则作业完成成功。 3)个人中心:个人中心显示自己的账号名、课程数、最近浏览、关于软件、退登录。 (3)教师端:教师端分为首页、我的课程、管理、个人中心 1)首页显示创建的课程、可以进行课程的创建、删除和修改。 2)我的课程显示教师创建的所有课程,点击某一创建的课程,课程界面分为三部分:签到、讨论、测评。 签到框用于发布签到,发布签到设置签到格式以及签到间,发布完成后显示历史发布签到信息,点击某个签到项,进入后显示统计的签到的学生; 讨论区教师发布讨论话题,上传相关资料,设置话题截止间,点击某一话题,会显示发言的学生; 测评区发布作业和测试,设置完成的截止间,点击某一作业或考试,显示完成的学生,点击编辑按钮进行试卷的评选; 3)管理,管理分为课程管理和学生管理,两者都根据不同的课程进行管理,管理界面显示教师名下的课程,点击某一课程,学生管理显示选择该课程的学生,点击某一学生,显示该学生的签到情况、讨论情况以及测评情况。课程管理则是将课程的测评,签到,讨论情况由高到低进行统计; 4)个人中心:个人中心显示教师的账号、创建课程数、删除课程数、上传资源数、关于软件、退登录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值