美文网首页
仅限两个App间传递信息方法

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

作者: Boyko | 来源:发表于2017-04-13 16:32 被阅读0次

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

 <activity android:name=".LoginActivity" >
            <intent-filter>
                <action android:name="baihui.cn" />

                <data android:scheme="info"/>

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

接收

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

相关文章

网友评论

      本文标题:仅限两个App间传递信息方法

      本文链接:https://www.haomeiwen.com/subject/nuwbattx.html