实现行业应用调用我们可以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