2013-04-18 95 views
2

我正在使用以下代码来检测当前正在运行的应用程序。但是当我运行任何新的应用程序。我没有得到它的包名,它是烘烤“com.hedy.launcher”。 代码有什么问题?检测当前正在运行的应用程序。 Android

@Override 
      public int onStartCommand(Intent intent,int flags, int startId) { 
       // TODO Auto-generated method stub 
       super.onStartCommand(intent, flags,startId); 
       Toast.makeText(this, "Service running", Toast.LENGTH_SHORT).show(); 

       handler = new Handler(){ 

        @Override 
        public void handleMessage(Message msg) 
        { 
         // TODO Auto-generated method stub 
         super.handleMessage(msg); 
         // count=count+1; 
         // Toast.makeText(MyService.this, ""+count, Toast.LENGTH_SHORT).show(); 
         ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(Activity.ACTIVITY_SERVICE); 
         String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName(); 
         Toast.makeText(MyService.this, ""+packageName, Toast.LENGTH_SHORT).show(); 
        } 

       }; 



       new Thread(new Runnable(){ 
        public void run() { 
        // TODO Auto-generated method stub 
        while(true) 
        { 
         try { 
         Thread.sleep(1000); 
         handler.sendEmptyMessage(0); 

        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

        } 

            } 
       }).start(); 
       return 0; 
      } 
+0

com.hedy.launcher看起来像一个包名称。你在期待什么? – shiladitya 2013-04-18 07:45:42

+0

@shiladitya我正在运行Adobe阅读器,所以我想要与Adobe阅读器相关的软件包名称 – Tushar 2013-04-18 07:52:56

回答

1
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName(); 

这是你的压缩包名称就行了。 尝试增加maxNum参数(您已设置为1)。

am.getRunningTasks(maxNum)将返回一个数组列表。检查arraylist的所有内容,看看你是否得到你所需的任何项目

+0

它的工作表示感谢。现在,如果我想杀一些背景应用程序,我该怎么做。 – Tushar 2013-04-18 09:59:50

+0

我不认为你可以杀死他们,除非你有root权限,因为android中的所有应用程序都是沙盒。 – shiladitya 2013-04-18 13:50:12

+0

有应用程序停留聚焦这是能够杀死其他应用程序我想知道它是如何在那里工作... – Tushar 2013-04-18 14:15:40

相关问题