2011-03-11 17 views
6

मैं अपने एंड्रॉइड फोन का हालिया कार्य देखना चाहता हूं। मैं इंटरनेट से कुछ कोड कोशिश कर रहा था लेकिन उनमें से कोई भी ठीक से काम नहीं करता था। मैं बस उपयोगकर्ता द्वारा निष्पादित अंतिम आवेदन के पीआईडी ​​और नाम प्राप्त करना चाहता हूं। उदाहरण के लिए, यदि मैं कैलक्यूलेटर एप्लिकेशन निष्पादित करता हूं और उसके बाद मैंने हालिया कार्य एप्लिकेशन को बनाया है, तो यह एप्लिकेशन मुझे कुछ ऐसा बताने में सक्षम होगा: "आपके द्वारा निष्पादित अंतिम एप्लिकेशन 'कैलकुलेटर' है और पीआईडी ​​'2222' है "।उपयोगकर्ता द्वारा हालिया कार्य को उपयोगकर्ता द्वारा देखे गए

मैं कुछ कोड के लिए एंड्रॉइड डेवलपर्स वेब पेज पर जांच कर रहा था और यही मुझे मिला, लेकिन मुझे नहीं पता कि एंड्रॉइड के लिए कैसे कार्यान्वित किया जाए।

ActivityManager.RecentTaskInfo जानकारी आप उन कार्यों के बारे में पुनर्प्राप्त कर सकते हैं जिन्हें उपयोगकर्ता ने हाल ही में शुरू किया है या देखा है।

ActivityManager.RunningServiceInfo जानकारी जो आप वर्तमान में सिस्टम में चल रहे किसी विशेष सेवा के बारे में जानकारी प्राप्त कर सकते हैं।

कोई सुझाव,

सादर

ActivityManager.RunningTaskInfo जानकारी आप किसी विशेष कार्य है कि वर्तमान में "चल" प्रणाली में के बारे में प्राप्त कर सकते हैं।

उत्तर

4

यहाँ मेरी समाधान है:

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 

    for (int i = 0; i < recentTasks.size(); i++) 
    { 
     Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+"");   
    } 

सावधान रहो !! पिछले आईडी प्रक्रिया के पीआईडी ​​नहीं है !! मैं निम्न आदेश का इस्तेमाल किया आप इस प्रक्रिया के पीआईडी ​​प्राप्त करना चाहते हैं:

mLogcatProc = Runtime.getRuntime().exec(new String[] {"ps"}); 

आवेदन नाम खोजने परिणाम पढ़ें और फिर पीआईडी ​​प्रक्रिया प्राप्त करने के लिए अलग हो गए।

+0

लेकिन मैं उस स्ट्रिंग को कैसे विभाजित कर सकता हूं? –

+0

किस अनुमति की आवश्यकता है? –

+1

एपीआई 21 के बाद getRunningTasks को बहिष्कृत किया गया है –

1

मैं हाल ही में उपलब्ध सेवाओं पर जांच कर रहा था जो गतिविधि प्रबंधक का भी उपयोग कर रहा था। शायद इसे getRecentTasks (int maxNum, int flags) विधि में बदलें और नीचे अपनी आवश्यकताओं को संशोधित करें !?

private boolean isServiceOnline() { 

      final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 

      final List<ActivityManager.RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE); 
      for (int i = 0; i < services.size(); i++) { 
       String packageClassName = services.get(i).service.getClassName(); 
       if (packageClassName.equals("org.couchdb.android.CouchService")) { 
        Log.d(TAG, "Service Nr. " + i + " :" + services.get(i).service); 
        Log.d(TAG, "Service Nr. " + i + " package name : " + services.get(i).service.getPackageName()); 
        Log.d(TAG, "Service Nr. " + i + " class name : " + packageClassName); 
        ; 
        return true; 
       } 
      } 
      return false; 
     } 
7
int numberOfTasks = 1; 
ActivityManager m = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE); 
//Get some number of running tasks and grab the first one. getRunningTasks returns newest to oldest 
RunningTaskInfo task = m.getRunningTasks(numberOfTasks).get(0); 

//Build output 
String output = "the last application you've executed is '"+task.id+"' and the PID is '"+task.baseActivity.toShortString()+"'"; 

getRunningTasks

RunningTaskInfo