2011-12-14 19 views
7

मुझे अपना एप्लिकेशन इंस्टॉल होने पर एक क्रिया करने की आवश्यकता है। मैंनेएंड्रॉइड का इरादा जब मेरा ऐप इंस्टॉल किया गया है

Intent.PACKAGE_ADDED 

का उपयोग करने में देखा है, लेकिन मुझे इंस्टॉल किए जा रहे ऐप में इरादा नहीं मिला है। जब मैं पहली बार अपना ऐप इंस्टॉल करता हूं तो मैं कोड चलाने के लिए चाहता हूं।

उपयोग केस एक ऑनलाइन सेवा के साथ पंजीकरण कर रहा है। मैं BOOT_COMPLETED के लिए सूचीबद्ध कर सकता हूं जो कि ठीक है अगर ऐप पहले से स्थापित है, लेकिन जब उपयोगकर्ता पहले ऐप इंस्टॉल करता है तो मुझे मामले को संभालने की आवश्यकता होती है।

इस पोस्ट, Can you run an intent or script when your app gets installed on Android?

TIMER_TICK करने के लिए और पहले प्रसारण पर सुन पता चलता है, पंजीकरण करते हैं और एक ध्वज सेट इतना है क्योंकि वह अगले TIMER_TICK पर नहीं करने के लिए। यह समस्याग्रस्त प्रतीत होता है क्योंकि आप रिसीवर में कुछ करते हैं या नहीं, फिर भी आप हर रिसीवर को हर मिनट शुरू कर रहे हैं और प्रक्रिया में बैटरी का उपयोग कर रहे हैं।

क्या कोई बेहतर समाधान है?

उत्तर

5

कोई विश्वसनीय घटना नहीं है जिसे आप पकड़ सकते हैं। यहां तक ​​कि TIMER_TICK केवल Android 3.1 के नीचे काम करेगा। 3.1 से इसके बाद आप सिस्टम ब्रॉडकास्ट प्राप्त नहीं कर सकते हैं जब तक कि आपका ऐप सक्रिय स्थिति में न हो (जिसका अर्थ है कि उपयोगकर्ता इसे कम से कम एक बार मैन्युअल रूप से लॉन्च करना है)

बंद कर दिया अनुप्रयोगों

एंड्रॉयड 3.1 से शुरू पर लॉन्च नियंत्रण, सिस्टम के पैकेज प्रबंधक अनुप्रयोग जो बंद कर दिया स्थिति में हैं का ट्रैक रखता है और पृष्ठभूमि प्रक्रियाओं और से उनके प्रक्षेपण को नियंत्रित करने का एक साधन प्रदान करता है अन्य अनुप्रयोग।

[...]

ध्यान दें कि प्रणाली सभी प्रसारण उद्देश्य के लिए FLAG_EXCLUDE_STOPPED_PACKAGES कहते हैं। यह सेवाओं से अनजाने में या स्टॉपपैड अनुप्रयोगों के अनावश्यक रूप से लॉन्च करने वाले घटकों से प्रसारण को रोकने के लिए करता है। [..]

आवेदन एक बंद कर दिया स्थिति में हैं जब वे पहली बार स्थापित कर रहे हैं लेकिन अभी तक लॉन्च नहीं हुए हैं और जब वे मैन्युअल रूप से उपयोगकर्ता द्वारा बंद कर दिया जाता है (में ऐप्लिकेशन प्रबंधित करें)।

3.1. release notes

मैं उपयोगकर्ता पहली बार के लिए अपने अनुप्रयोग शुरू होता है जब आपके intitial काम करने के लिए सलाह देते हैं से

+0

मुझे लगता है कि आपके पास एक टाइपो है - क्या आपका पहला वाक्य नहीं होना चाहिए "कोई भरोसेमंद नहीं है जिसे आप पकड़ सकते हैं"? – CommonsWare

+0

@ कॉमन्सवेयर ओपीएस, आप फिर से सही हैं। धन्यवाद! :) –

+1

ध्यान दें कि यदि आप पहली बार अपना ऐप शुरू करते समय अपना प्रारंभिक काम करने के एलेक्सट्स के सुझाव का पालन करना चाहते हैं, तो उसके लिए बिल्कुल नया प्रसारण है: [ACTION_PACKAGE_FIRST_LAUNCH] (http://developer.android.com/ संदर्भ/एंड्रॉयड/सामग्री/Intent.html # ACTION_PACKAGE_FIRST_LAUNCH)। – kabuko

0

यदि आप यह मानने के इच्छुक हैं कि Google एंड्रॉइड मार्केट ऐप इंस्टॉल है, तो आप INSTALL_REFERRER का उपयोग कर सकते हैं। अधिक जानकारी के लिए Get referrer after installing app from Android Market देखें।

+0

यह अब एंड्रॉइड 3.1 के रूप में काम नहीं करना चाहिए। जब तक उपयोगकर्ता आपके एप्लिकेशन को मैन्युअल रूप से पहली बार लॉन्च नहीं करता तब तक आपको कोई प्रसारण प्राप्त नहीं हो सकता है। – CommonsWare

+0

आह, मुझे उस कॉमन्सवेयर के बारे में पता नहीं था, धन्यवाद। क्या वह किसी भी तरह से कतार प्रसारित करेगा और ऐप लॉन्च होने पर प्राप्त होगा? – kabuko

+0

संभवतः। मैंने उस पर शोध नहीं किया है। आम तौर पर, प्रसारण कतारबद्ध नहीं होते हैं, लेकिन बाजार उस के लिए कुछ खास कर सकता है - मुझे यकीन नहीं है। – CommonsWare

1

नए बाजार के साथ, INSTALL_REFERRER इरादा अब एंड्रॉइड 3.1 और उसके बाद के लॉन्च समय पर निकाल दिया गया है। तो हम इसे अपने ऐप में प्राप्त कर सकते हैं। हालांकि यह अभी भी 2.2 के लिए इंस्टॉल समय पर आग लगती है जब ऐप स्टॉप स्टेट में होता है।तो मैं फ्रायओ के मामले में इसे प्राप्त करने में सक्षम नहीं हूं।

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