安卓App相互唤醒的几种方式

2025-10-17 07:31:28

1、1. ComponentName

用ComponentName唤起Server,Server的Activity要在manifest配置中设置exported为true。

Server的配置:

<activity android:name="com.jxx.server.ServerActivity"     android:exported="true"/>

Client调用:

Intent intent1 = new Intent();

ComponentName componentName = new ComponentName("com.jxx.server", "com.jxx.server.ServerActivity");

intent1.setComponent(componentName);

intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                                  

2、2. 隐式跳转Uri:

唤起拨号的页面

Intent intent =  new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + phoneNumber));startActivity(intent);

用Uri的形式唤起Server并传递数据。

Server端配置:

<activity android:name=".SecondActivity">                                  

<intent-filter>                                                            

<action android:name="com.jxx.server.ServerActivity" />        

<data                                                                      android:host="com.jxx.server"                                  android:scheme="ServerActivity" />

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

</intent-filter>                                                  

3、3. PackageManager

知道Server的包名即可。

PackageManager packageManager = getPackageManager();

Intent intent3 = packageManager.getLaunchIntentForPackage("com.jxx.server");

if (intent3 != null)

{                                                          startActivity(intent3);

4、4. 静态广播接收者

Server端注册一个静态广播接收者,在广播接收者中跳转Activity即可,客户端只需要发送一个广播。

Server定义广播接收者:

public class ServerBroadCastReceiver extends BroadcastReceiver

{

@Override    public void onReceive(Context context, Intent intent)

{

Intent intent1 = new Intent(context, MainActivity.class);        

intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        

context.startActivity(intent1);    

}

}

在manifest中注册为静态广播接收者,并定义action:

<receiver                                                          android:name=".ServerBroadCastReceiver"                        android:enabled="true"                                          android:exported="true">                                        

<intent-filter>                                                    

<action android:name="server.ServerBroadCastReceiver" />    

</intent-filter>                                                                                            

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢