2010-09-16 34 views
67

पर जाकर मैं एंड्रॉइड में प्रोग्राम स्क्रीन पर प्रोग्राम स्क्रीन पर जाना चाहता हूं जब उपयोगकर्ता बटन पर क्लिक करता है। यह कैसे किया जा सकता है?होम स्क्रीन पर प्रोग्रामिंग

+11

कृपया, अपने कुछ पुराने प्रश्नों को स्वीकार करें। – nothrow

+0

बैकप्रेस किए गए या keyEvent = backpressed के माध्यम से ओवरराइड करना और उस पर होम दबाए जाने का एक आसान तरीका है। तो यह घर जैसा व्यवहार करेगा – Nepster

उत्तर

138

आप एक Intent के माध्यम से ऐसा कर सकते हैं।

Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_HOME); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(startMain); 

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

आप इस आपके एप्लिकेशन से किसी बाहर निकलें बटन का निर्माण करना चाहते हैं एंड्रॉयड में exit Buttons पर इस लेख को पढ़ने के लिए कृपया

+2

मैंने पढ़ा है कि ऐप में ऐसा करना बहुत गलत है। लेकिन लोग इसे क्यों कहते हैं? मुझे पता है कि मैं इसका उपयोग कहां कर रहा हूं। और ऐसा लगता है कि मैं ऐसा करने के लिए एकमात्र चीज कर सकता हूं जो मैं करना चाहता हूं। तो क्या इसका इस्तेमाल करना ठीक है? – Enigma

+4

सरल चीज जो मेरे लिए काम करती है: 'प्रारंभिकता (नया इरादा (इरादा.एक्शन_एमआईएन) .addCategory (Intent.CATEGORY_HOME)); ' (FLAG_ACTIVITY_NEW_TASK आवश्यक प्रतीत नहीं होता है।) – Jonik

+0

यह एक पुराना धागा है, लेकिन हालांकि यह पिछली गतिविधि पर वापस लौटने का काम काम नहीं करता है। उसमें क्या गुण है? – portfoliobuilder

0

Android developer साइट से

यहाँ आप इन अतिरिक्त पैरामीटर का उपयोग कर उद्देश्यों के रूप में निर्दिष्ट कर सकते हैं अन्य कार्यों के कुछ उदाहरण हैं:

* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen. 
+3

stolle प्रश्न पूछने में कुछ भी गलत नहीं है जिसका उत्तर त्वरित Google क्वेरी और दस्तावेज़ीकरण में देखने के साथ दिया जा सकता है। यदि प्रश्न में सही कीवर्ड हैं तो यह पहले Google पेज पर बहुत तेज़ी से दिखाई देगा और दस्तावेज़ीकरण को देखने के लिए सही जानकारी और नमूना कोड को बहुत तेज खोज देगा। मैं किसी भी तरह से प्रशिक्षित एंड्रॉइड प्रोग्रामर हूं लेकिन मुझे इस सवाल का जवाब देने के लिए Google और एक या दो पृष्ठों को छोड़ना होगा। यह बहुत अच्छा होगा अगर इस प्रश्न का उत्तर यहां है जहां इसे संपादित, बेहतर, अद्यतन और मूल्यांकन किया जा सकता है। – Janusz

+0

@ जेनुज़, मुझे कठोर ध्वनि का मतलब नहीं था ... – st0le

9

Janusz's answer महान है।

एकमात्र चीज जिसे मैं जोड़ना चाहता हूं, जो कि टिप्पणी के लिए बहुत लंबा है, यह है कि आप वर्तमान गतिविधि के संदर्भ के बिना होम स्क्रीन पर जा सकते हैं।

Janusz का कोड किसी गतिविधि या टुकड़ा startActivity() की वजह से कॉल किया जाना चाहिए,

इस के आसपास पाने के लिए, आप अपने आवेदन फाइल में आपकी ऐप्लिकेशन संदर्भ के लिए एक स्थिर संदर्भ स्टोर कर सकते हैं:

public class YourApplication extends Application 
{ 

    private static Context mAppContext; 

    public void onCreate() 
    { 
     super.onCreate(); 
     ... 
     YourApplication.mAppContext = getApplicationContext(); 
    } 

    public static Context getContext() 
    { 
     return mAppContext; 
    } 

} 

अब आप उपयोगकर्ता को अपने ऐप के किसी भी वर्ग से डिवाइस होम स्क्रीन पर भेज सकते हैं, न केवल गतिविधियां, टुकड़े या अन्य क्लास को वर्तमान गतिविधि के संदर्भ में (आप तय कर सकते हैं कि यह एक अच्छी या बुरी चीज है):

Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_HOME); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
YourApplication.getContext().startActivity(startMain); 
10

एक पंक्ति समाधान

moveTaskToBack(true); //activity.moveTaskToBack(true); 

के रूप में होम बटन

+0

यह काम कर रहा है .. क्या यह एक अच्छा दृष्टिकोण है .. क्या यह हर मामले में काम करेगा? – Prabs

+0

मेरी स्थिति में यह ठीक काम करता है। मुझे यकीन नहीं है कि यह सभी मामलों में काम करता है या नहीं – Nepster

+0

मेरे लिए अच्छा काम करता है (एंड्रॉइड 6.x) –

0

मैं जानता हूँ कि यह है दबाया जाता है थोड़ी देर हो चुकी है, लेकिन मैं भी एक ही समस्या में पड़ गए और यहाँ यह व्यवहार करेंगे है मैं इसे कैसे हल किया । वापस करने के लिए अपने MainActivity आप बाहर निकलने से Activity

final Intent mainActivity = new Intent(this, MainActivity.class); 
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 

से झंडे को जोड़ने के लिए अब जब आप वापस बटन MainActivity सक्रिय एक होने दबाया की जरूरत है, यह होम स्क्रीन पर जाना होगा जा रहे हैं।

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