Android 启动其他应用程序';使用隐式意图创建服务组件

Android 启动其他应用程序';使用隐式意图创建服务组件,android,Android,是否可以使用隐式意图启动其他应用程序的服务组件? 例如,如果我想触发其他应用程序的服务,其意图过滤器接收“com.example.otherService” 但它不起作用。请帮帮我。您可以使用隐式意图调用其他应用程序的服务。 确保其他应用程序正在公开该意图,并检查其他应用程序是否支持该意图。 使用此选项检查是否存在此类缩进 // This snippet can obviously be wrapped in a method call for easy reuse // Get the pa

是否可以使用隐式意图启动其他应用程序的服务组件? 例如,如果我想触发其他应用程序的服务,其意图过滤器接收“com.example.otherService”


但它不起作用。请帮帮我。

您可以使用隐式意图调用其他应用程序的服务。 确保其他应用程序正在公开该意图,并检查其他应用程序是否支持该意图。 使用此选项检查是否存在此类缩进

// This snippet can obviously be wrapped in a method call for easy reuse

// Get the package manager
PackageManager packageManager = getPackageManager();
// Get activities that can handle the intent
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent,  0);
// Check if 1 or more were returned
boolean isIntentSafe = activities.size() > 0;

if (isIntentSafe) {
startActivity(intent);
}
//为了便于重用,显然可以将此代码段包装在方法调用中
//获取包管理器
PackageManager PackageManager=getPackageManager();
//获取能够处理意图的活动
列表活动=packageManager.QueryInputActivities(intent,0);
//检查是否返回了1个或多个
布尔值isIntentSafe=activities.size()>0;
如果(isIntentSafe){
星触觉(意向);
}

有关更多信息,请查看链接,如果您知道确切的软件包名称,并且该服务在服务声明中具有
android:exported=“true”
属性,则可以启动另一个应用程序的服务

Intent intent=new Intent();
intent.setComponent(new ComponentName("com.xxx.yyy","com.xxx.yyy.SampleService"));
startService(intent);
使用隐含意图

Intent intent=new Intent("ACTION_TO_START_SERVICE");
intent.setPackage("com.xxx.yyy");
startService(intent);

谢谢你的回答。你的答案是通过明确的意图启动,对吗?有没有任何方法可以通过隐含的意图来做到这一点?广播接收机可以吗?@ralphgabb是的,谢谢你的回答。如示例所示,另一个应用程序的服务组件具有“com.example.otherservice”的意图过滤器。我可以编辑这两个应用程序。但是startService不起作用。
Intent intent=new Intent("ACTION_TO_START_SERVICE");
intent.setPackage("com.xxx.yyy");
startService(intent);