仅限两个App间传递信息方法

Android 进程间通信有很多方法,比如Android中进程间通信(IPC)方式总结

由于项目需求简单,只是由A App 调用并开启 B App 的登录界面,所以像那些方法有点大材小用.就用了下面的方法.

1. A App 中某处所要调用B App的方法

   private void doStartApplicationWithPackageName(String packagename) {
        // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
        PackageInfo packageinfo = null;
        try {
            packageinfo = getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        if (packageinfo == null) {
            return;
        }
        // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
        Intent resolveIntent = getPackageManager().getLaunchIntentForPackage(packageinfo.packageName);// 这里的packname就是从上面得到的目标apk的包名
        resolveIntent.putExtra("login", "123456");  // 所传递的值
        // 启动目标应用
        startActivity(resolveIntent);
    }

2. 在B App的首页activity中接收 ("MAIN" Activity)

接收的方法和普通的一样,接收之后进行自己的业务逻辑

PS

这个方法只是开启B ,顺便传值.
还有一种方法是,在A 中调用B 的某个activity,直接显示在A 上 ,而不启动B ,简单说就像是A自己的页面一样.

A 中调用方法:

    Intent i =  new Intent("baihui.cn", Uri.parse("info://111"));
    startActivity(i);

B 中被调用的Activity,清单文件中.过滤Intent

 
            
                

                

                
            
        

接收

 Intent intent = getIntent();
  if (intent != null && intent.getData()!= null) {
       String s =  intent.getData().toString().replace(intent.getScheme()+"://","");
  }

你可能感兴趣的:(仅限两个App间传递信息方法)