2010-07-27 13 views
27

मैं एक विशिष्ट आवेदन लॉन्च करना चाहता हूं। मुझे पता है कि इरादे कैसे करें लेकिन मैं चयन मेनू से बचना चाहता हूं यदि इरादे को संभालने वाले कई ऐप्स हैं, तो मैं सीधे किसी विशेष ऐप पर जाना चाहता हूं। उम्मीद है कि यह समझ में आता है।मैं एंड्रॉइड में प्रोग्रामेटिक रूप से एक विशिष्ट एप्लिकेशन कैसे लॉन्च करूं?

+1

की [हमारे आवेदन से एक और एक आवेदन खोलें?] संभव डुप्लिकेट (http://stackoverflow.com/questions/3342655/open-another-one-application-from-our-application) – Pentium10

उत्तर

23

आप पैकेज का नाम/वर्ग सीधे, उदाहरण के लिए Twidroid कार्यक्रम आप उपयोग करेंगे कॉल करने के लिए एक नया आशय बनाने के लिए उपयोग निम्नलिखित link text:

Intent intent = new Intent("com.twidroid.SendTweet"); 

आप शायद एक कोशिश डाल करना चाहते हैं/जब एप्लिकेशन इंस्टॉल नहीं होता है तो गतिविधि NotFoundException के लिए चारों ओर पकड़ें।

+4

यह तो होता है, आप Google Play पर अपवाद और खुले एप्लिकेशन को फेंक सकते हैं। ;) –

8
Intent intent = new Intent();  
intent.setClassName("package.name", "package.name.LauncherActivityName"); 
startActivityForResult(intent,REQUEST_CODE); 
3

गतिविधि आप, अपने स्वयं के पैकेज के लिए प्रकट में न केवल दिखाई देनी चाहिए बुला रहे हैं, लेकिन कॉल पैकेज के लिए प्रकट में भी। - मत भूलना!

44

आपको पैकेज प्रबंधक के फ़ंक्शन का उपयोग करना चाहिए।

Context ctx=this; // or you can replace **'this'** with your **ActivityName.this** 
try { 
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet"); 
ctx.startActivity(i); 
} catch (NameNotFoundException e) { 
    // TODO Auto-generated catch block 
} 
+1

सीटीएक्स क्या है? ऑब्जेक्ट या कीवर्ड? – Azahar

+2

यह एक [एंड्रॉइड संदर्भ ऑब्जेक्ट] है (http://developer.android.com/reference/android/content/Context.html), उदा। एक गतिविधि या getAplicationContext() के वापसी मूल्य। – Carni

+0

ठीक है। धन्यवाद कारमी +1 – Azahar

3

मैं का उपयोग करें:

try { 
     Intent intent = new Intent();  
     intent.setClassName("package.name", "<your_package_name>"); 
     startActivity(intent); 
    } catch (NameNotFoundException e) { 
     Log.e(TAG, e.getMessage()); 
    } 

लेकिन Cami जैसे सुझाव यह भी काम करेगा:

try { 
    Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet"); 
    ctx.startActivity(i); 
} catch (NameNotFoundException e) { 
    Log.e(TAG, e.getMessage()); 
} 
1
OnCreate विधि कॉल में

=> openApp(); विधि

private void openApp() { 
    String packageName = "com.google.android.gm"; 
    if (isAppInstalled(activity, packageName)) 
     startActivity(getPackageManager().getLaunchIntentForPackage(packageName)); 
    else Toast.makeText(activity, "App not installed", Toast.LENGTH_SHORT).show(); 
} 

public static boolean isAppInstalled(Activity activity, String packageName) { 
    PackageManager pm = activity.getPackageManager(); 
    try { 
     pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); 
     return true; 
    } catch (PackageManager.NameNotFoundException e) { 
    } 
    return false; 
} 
+0

धन्यवाद जीमेल के लिए आप बहुत बहुत धन्यवाद! –

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