Android 如何以编程方式在设备中运行已安装应用程序的服务

Android 如何以编程方式在设备中运行已安装应用程序的服务,android,android-service,Android,Android Service,我有一个获取运行服务的功能: public ArrayList<String> getRunningServices() { ActivityManager activityMg = (ActivityManager)context.getSystemService(context.ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> serviceList = activityMg.ge

我有一个获取运行服务的功能:

public ArrayList<String> getRunningServices() {

    ActivityManager activityMg = (ActivityManager)context.getSystemService(context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningServiceInfo> serviceList = activityMg.getRunningServices(100);
    ArrayList<String> serviceName = new ArrayList<String>();

 for (int i=0; i<serviceList.size(); i++) {
       ActivityManager.RunningServiceInfo currentService = serviceList.get(i);
       boolean serviceNam = currentService.started;
       if (serviceNam == true) {
           serviceName.add(currentService.service.getPackageName());
    }

     }

    return serviceName;

}
但我只想运行此应用程序或其他应用程序的服务

我有一个应用程序包的字符串名称,我想启动它的服务


有可能吗?

您好,下面是从另一个应用程序启动服务

Intent intent = new Intent();
String pkg = currentService.service.getPackageName();
String cls = currentService.service.getPackageName() + "." + currentService.service.getClassName();
intent.setComponent(new ComponentName(pkg, cls));
startService(intent);

谢谢Kevin,但这不正确,因为在“currentService”中,我们有正在运行的服务,但我们不知道哪个服务没有运行。您说过“服务未运行…”,但在“else”中,服务正在运行,并且没有显式启动。这是在后台。很抱歉,我只是简单地回答。提供的代码旨在帮助您解决启动不属于应用程序一部分的服务的问题,让我编辑我的答案:)getRunningServices将只返回运行中的服务可能需要找到停止服务的方法。想一想,给我一些:)谢谢。。。我编辑我的问题:)我的函数有一个字符串名参数,它是我们想要运行其服务的应用程序的包名
Intent intent = new Intent();
String pkg = currentService.service.getPackageName();
String cls = currentService.service.getPackageName() + "." + currentService.service.getClassName();
intent.setComponent(new ComponentName(pkg, cls));
startService(intent);