是否可以使用隐式意图启动其他应用程序的服务组件? 例如,如果我想触发其意图过滤器收到" com.example.otherService"的其他应用程序服务,
Intent p = new Intent("com.example.otherService");
p.putExtra("lat", temp);
p.addCategory(Intent.CATEGORY_LAUNCHER);
p.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startService(p);
但它不起作用。请帮帮我。
答案 0 :(得分:0)
您可以使用隐式意图来调用其他应用的服务。 确保其他应用程序正在公开意图并检查其他应用程序是否支持它。 用它来检查是否存在这样的缩进。
// 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);
}
有关详细信息,请参阅链接http://codetheory.in/android-intents/
答案 1 :(得分:0)
如果您知道确切的包名称并且该服务在服务声明中具有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);