Android 一个应用程序调用另一个应用程序

本文详细介绍了如何在Android中实现一个应用(XHL)调用另一个应用(MPos)的过程,包括创建应用、配置启动模式、代码实现及界面交互。通过讲解Activity的singleTask启动模式、Intent的使用以及Service和SharedPreference的基础知识,帮助开发者理解APP间的交互机制。
摘要由CSDN通过智能技术生成

实现行业应用调用我们可以Get到哪些技能?

* Activity的singleTask的启动模式
* 界面跳转的基本实现
* 前台Service的基本介绍和实现
* SharedPreference的简单用法

实现行业应用调用的目的

在XHL应用程序中去调用MPos应用程序,借助MPos的一些界面完成特殊的功能。

实现行业应用调用步骤

(1)创建名为XHL的应用程序
(2)创建名为MPos的应用程序

代码讲解

1.创建名为XHL的应用程序的界面

如下是XHL的主界面

public class MainActivity extends AppCompatActivity {
   

    //要调用app的包名 + 类名
    private static String MOSPACKAGE = "zlll.bg.com.example.cn.application";
    private static String MPOSCLASSNAME = "zlll.bg.com.example.cn.application.WelcomeActivity";
    private static String MPOSCLASSNAME2 = "zlll.bg.com.example.cn.application.MainActivity"  
    //要调用app的服务
    private static String SERVICENAME = "zl.com.example.cn.myapplication.service.MainService";

    //如下是本应用的包名
    private static String PACKAGE = "zl.com.example.cn.myapplication";

    private Button open,exit;

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        open = (Button) findViewById(R.id.open);
        exit = (Button) findViewById(R.id.exit);
    }

   @Override
    protected void onResume() {
        super.onResume();
        //这里通过判断某个服务是否正在运行来设定按钮的状态
        if(Utils.isServiceWork(MainActivity.this,SERVICENAME)) {
            open.setEnabled(false);
            exit.setEnabled(true);
        }else{
            open.setEnabled(true);
            exit.setEnabled(false);
        }

     public void btn(View view){
         //首先判断调用的apk是否安装
         boolean isAlive =  Utils.isInstall(MainActivity.this,MOSPACKAGE);
         if(isAlive){ 
            Intent intent = new Intent(Intent.ACTION_MAIN);//设置action
            intent.addCategory(Intent.CATEGORY_LAUNCHER);//设置category
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//设置singleTask启动模式
            ComponentName cn = new ComponentName(MOSPACKAGE,MPOSCLASSNAME );//封装了包名 + 类名
            //设置数据
            intent.putExtra("package",PACKAGE);
            intent.putExtra("className",CLASSNAME);
            intent.putExtra("isOnLineSign", true);
            intent.setComponent(cn);
            startActivity(intent);
        }else{
            Toast.makeText(MainActivity.this, "没有找到对应的应用程序", Toast.LENGTH_SHORT).show();
        }
        }

     public void exit(View view){
          Toast.makeText(MainActivity.this, "退出调用的的应用程序", Toast.LENGTH_SHORT).show();
           Intent intent = new Intent("com.bocs.mpos.home");//设置action
           intent.putExtra("isExit", true);  //设置数据
           intent.setClassName(MOSPACKAGE, MPOSCLASSNAME2);//内部调用了ComponentName组件
           startActivity(intent);
        }
  }

如下是工具类

public class Utils {
   

  /**根据包名判断某个应用程序是否安装方法*/
    public static boolean isInstall(Context context , String packageName) {
        if (packageName == null || "".equals(packageName))
            return false;
        try {
            ApplicationInfo info = context.getPackageManager().getApplicationInfo(
                    packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
            return
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值