2013-04-18 179 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

相關問題