एंड्रॉइड में दूसरे ऐप को लॉन्च करना
आप किसी अन्य ऐप को उसके पैकेज नाम से (स्पष्ट इंटेंट) या एक क्रिया करके (निहित इंटेंट) लॉन्च कर सकते हैं। दोनों दृष्टिकोण यहां कवर किए गए हैं।
विधि 1 - स्पष्ट लॉन्च (पैकेज नाम ज्ञात)
public void launchByPackage(String packageName) {
PackageManager pm = getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(packageName);
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} else {
Toast.makeText(this, "ऐप इंस्टॉल नहीं: " + packageName, Toast.LENGTH_SHORT).show();
// वैकल्पिक: Play Store पर रीडायरेक्ट करें
// startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
}
}
उपयोग: launchByPackage("com.google.android.youtube")।
विधि 2 - निहित इंटेंट (क्रिया द्वारा)
// वेब URL खोलें
public void openWeb(String url) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
// ईमेल लिखें
public void composeEmail(String to, String subject, String body) {
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", to, null));
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(intent, "ईमेल ऐप चुनें"));
}
// फाइल/इमेज साझा करें
public void shareFile(Uri fileUri, String mimeType) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(intent, "साझा करें"));
}
विधि 3 - कस्टम स्कीम / डीप लिंक
यदि लक्ष्य ऐप एक कस्टम स्कीम घोषित करता है (उदाहरण: myapp://section/detail) :
public void openDeepLink(String uriString) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriString));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
// फॉलबैक: वेब संस्करण या Play Store खोलें
}
}
सुरक्षा और सर्वोत्तम अभ्यास
- हमेशा resolveActivity() जांचें — क्रैश से बचाता है यदि कोई ऐप इंटेंट को संभाल नहीं सकता।
- FLAG_ACTIVITY_NEW_TASK का उपयोग करें जब किसी सेवा/रिसीवर/नॉन-एक्टिविटी संदर्भ से लॉन्च कर रहे हों।
- Intent.createChooser() का उपयोग करें उपयोगकर्ता को विकल्प देने के लिए (निहित इंटेंट के लिए)।
- एंड्रॉइड 11+ (API 30) पैकेज विजिबिलिटी:
AndroidManifest.xmlमें<queries>घोषित करें:
<queries>
<package android:name="com.google.android.youtube" />
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="text/plain" />
</intent>
</queries>
पूर्ण उदाहरण गतिविधि
public class LauncherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launcher);
findViewById(R.id.btnYouTube).setOnClickListener(v ->
launchByPackage("com.google.android.youtube"));
findViewById(R.id.btnBrowser).setOnClickListener(v ->
openWeb("https://www.example.com"));
findViewById(R.id.btnShare).setOnClickListener(v ->
shareText("इसे देखें!"));
}
private void launchByPackage(String pkg) { /* ऊपर देखें */ }
private void openWeb(String url) { /* ऊपर देखें */ }
private void shareText(String text) {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(i, "साझा करें"));
}
}
मूल उदाहरण की समीक्षा
मूल कोड हार्डकोडेड YouTube पैकेज, WindowManager/चैट हेड कोड (असंबंधित), और कोई पैकेज विजिबिलिटी घोषणा का उपयोग करता था। ऊपर दिया गया संस्करण साफ, पुन: प्रयोज्य विधियों और Android 11+ संगतता पर केंद्रित है।