Android唤醒 传参

App唤醒其他App传参问题

基本使用方法

1.urlschema 隐式

调用方:

  webview.loadUrl("lf-open://open/lf?username=121&pwd=456");

被唤醒方:

  Uri uri = getIntent().getData();
        if (uri != null) {
            String username = uri.getQueryParameter("username");
            String pwd = uri.getQueryParameter("pwd");
            Log.d("lf", username + "," + pwd);
        }
 <activity
            android:name=".SettingActivity"
            android:launchMode="singleTask"
            android:theme="@style/Theme.AppCompat">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="open"
                    android:pathPrefix="/lf"
                    android:scheme="lf-open" />
            </intent-filter>
        </activity>

 

2.intent 显示

调用方

 String packageName = "com.example.liutest";
                String className = "com.example.liutest.SettingActivity"; 
                String data="123";
                Intent intent=null;
                if(true){
                    if(true){
                        intent=new Intent(Intent.ACTION_MAIN);
      //            intent.addCategory(Intent.CATEGORY_LAUNCHER);
                        ComponentName cn=new ComponentName(packageName,className);
                        intent.setComponent(cn);
                    } intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                } 
                    intent.putExtra("data",data); 
               startActivity(intent);

被唤醒方:

  Intent intent = getIntent();
            String data = intent.getStringExtra("data");
            Log.d("lf", data);

存在的问题:

urlschema  第一次能正常唤醒并获取参数,第二次可以唤醒,但参数取不到,即没有触发oncreate事件。

唤醒的一定是app loading页面,并且 启动模式设置为 android:launchMode="singleTask"

intent 方式 拿不到参数,是因为多了这句 intent.addCategory(Intent.CATEGORY_LAUNCHER);

 

整体思路是 App A 唤醒 App B的同时要实现登录功能,故需要传递用户的一些参数。这样相当于每次都是新建了一个App B(唤醒的是B的loading页面),利用

 if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            finish();
            return;
        }

来判定是否是第一次打开。如果是第一次打开,执行初始化逻辑,否则直接return。参数的获取要写在这几句的前面。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值