2013-04-16 16 views
11

शुरूआत मैं इस सवाल के लिए stackoverflow खोज की है और पाया है: Android, Detect when other apps are launched और Reliable way to detect application launch from home/desktop? है, जो एक तरह से मेरे सवाल का जवाब देता है लेकिन यह अभी भी पर्याप्त नहीं है।एंड्रॉयड गतिविधि का पता लगाने

मैं मुझे लगता है कि हाल ही के ऐप्स की एक सूची और सबसे अधिक इस्तेमाल किया क्षुधा की एक सूची उपकरण के उपयोगकर्ता से पता चलता एक विजेट/अनुप्रयोग बनाना चाहते हैं आपकी क्या अपेक्षाएं हैं।

समस्या अधिकांश उपयोग किए गए ऐप्स की सूची बनाने के लिए मेरे पास ऐप्स के बारे में सटीक डेटा कैसे हो सकता है।

बेस जानकारी

  • मैं अपने खुद के Android ओएस (4.2 आधारित) कोड संकलन कर रहा हूँ तो मैं सब कुछ की पहुंच है।
  • मैं लॉन्चर भी विकसित कर रहा हूं।
  • इसे सीटीएस पास करने और Google को अनुमोदित करने की आवश्यकता है।
  • मैं ऐप को सिस्टम विशेषाधिकारों के साथ बना सकता हूं।
  • मुझे पता है कि यह Google के लिए एक सुरक्षा समस्या हो सकती है।

कुछ समाधान

हाल ही के ऐप्स वहाँ ActityManager, getRecentApps विधि के माध्यम से पाया जा सकता है, इसलिए अब समस्या।

मैं इस के लिए वेब खोज की है और पहले से ही पाया है निम्न समाधानों:

  1. activityManager, getRunningTasks विधि हर एक्स सेकंड क्वेरी और सूची (innacurate जानकारी, यह भी का एक बहुत का उपयोग कर निर्माण करने के लिए एक सेवा का उपयोग करें बटेरी)।
  2. यह जानकारी प्राप्त करने logcat का उपयोग करें (, मेरे लिए एक हैक की तरह लगता है की जरूरत है प्रणाली अनुमतियाँ)
  3. बदलें activityManager ही आदेश में इस जानकारी (सबसे अधिक संभावना सीटीएस परीक्षण असफल हो जायेगी)
  4. उपयोग लांचर प्रदान करने के लिए लॉन्च किए गए ऐप्स को सत्यापित करने के लिए (अन्य ऐप्स के अंदर लॉन्च किए गए ऐप्स को याद करते हैं)

और कुछ और मुझे याद आया है?

अग्रिम धन्यवाद, टैगो कोस्टा

+0

आप बहुत सभी 4 विकल्पों को सूचीबद्ध करने के साथ इसे काफी पसंद आया। मेरा पसंदीदा एक '(ActivityManager) का उपयोग कर रहा है .getSystemService (ACTIVITY_SERVICE); ' – srf

+0

उत्तर के लिए धन्यवाद, मैं उन सभी को आजमाने की कोशिश कर रहा हूं और देख सकता हूं कि कौन सा सबसे अच्छा काम करता है। एक बार फिर धन्यवाद। –

+0

logcat एंड्रॉइड 4 के साथ काम नहीं करता है।2 और बाद में जब तक आपके पास रूट अनुमतियां न हों, तो https://groups.google.com/forum/?fromgroups=#!topic/android-developers/6U4A5irWang – mattlaabs

उत्तर

1

एंड्रॉयड डिफ़ॉल्ट हाल ही के ऐप्स संवाद कार्यान्वयन आपके लिए सबसे अच्छा संदर्भ, है look here..check reloadButtons()

final ActivityManager am = (ActivityManager) 
       context.getSystemService(Context.ACTIVITY_SERVICE); 
     final List<ActivityManager.RecentTaskInfo> recentTasks = 
       am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE); 

.. आप समान तरीके से कोशिश कर सकते हैं

+0

टिप्पणी के लिए धन्यवाद, मैंने सभी 4 चरणों का प्रयास किया है और लॉन्चर में स्टार्टप्लिकेशन कॉल को पकड़ने के साथ चला गया है। इसमें लगभग सही जानकारी है और कोई अतिरिक्त प्रक्रिया नहीं है। –

+0

क्या आप "लगभग सही" निर्दिष्ट कर सकते हैं? तुम किसे याद कर रहे हो? –

+0

अन्य गतिविधियों के भीतर लॉन्च किए गए एप्लिकेशन जो मेरे लॉन्चर नहीं हैं। चूंकि ज्यादातर लोग लॉन्चर के माध्यम से गतिविधियों को लॉन्च करते हैं, यह मेरे उद्देश्य को पूरा करता है। –

संबंधित मुद्दे