यह "आवेदन की जानकारी" स्क्रीन शुरू करने के लिए संभव है (जो है, Menu
→ Settings
→ Applications
→ Manage Applications
→ किसी भी आवेदन का चयन करें) किसी अन्य ऐप की?मैं एंड्रॉइड एप्लिकेशन जानकारी स्क्रीन प्रोग्रामेटिक रूप से कैसे शुरू कर सकता हूं?
उत्तर
Android 2.3 में, आप एक ACTION_APPLICATION_DETAILS_SETTINGS
Intent
पर startActivity()
उपयोग कर सकते हैं, एक उचित Uri
साथ, अपने ऐप की "प्रबंधन" स्क्रीन को लाने के लिए। हालांकि, यह एंड्रॉइड 2.3 के लिए नया है - मुझे एंड्रॉइड के पिछले संस्करणों में ऐसा करने के तरीके से अवगत नहीं है।
startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_SETTINGS));
आपको सेटिंग्स/एप्लिकेशन सूची में लाएगा। आप एक विशिष्ट अनुप्रयोग को खोलने के लिए चाहते हैं, मैं 2.2 में सोचते हैं और नीचे वहाँ कोई रास्ता नहीं है, (क्योंकि inofficial जरूरी सुझाव नहीं) जिस तरह ताकि आप एक जाने की जरूरत चाहते हैं:
final Intent i = new Intent("android.intent.action.VIEW");
i.setComponent(new ComponentName("com.android.settings","com.android.settings.InstalledAppDetails"));
i.putExtra(...); // need to figure out the correct extra, probably app package name
startActivity(i);
लेकिन ध्यान दें कि यह है अनुशंसित नहीं है क्योंकि यह आधिकारिक एपीआई/इरादा (फ़िल्टर) नहीं है और इसलिए भविष्य में बदल सकता है।
2.2 और नीचे, कोई सार्वजनिक एपीआई नहीं है जिसे आप एक्सेस कर सकते हैं। लेकिन आप अभी भी इंस्टॉल किए गए ऐपडेट्स गतिविधि को प्रबंधित अनुप्रयोगों के रूप में शुरू कर सकते हैं करता है। देख here
// utility method used to start sub activity
private void startApplicationDetailsActivity() {
// Create intent to start new activity
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClass(this, InstalledAppDetails.class);
intent.putExtra(APP_PKG_NAME, mCurrentPkgName);
// start new activity to display extended information
startActivityForResult(intent, INSTALLED_APP_DETAILS);
}
निष्कर्ष: यदि आप इस मैं लिखा था की तरह "आवेदन की जानकारी" स्क्रीन शुरू कर सकते हैं:
private static final String SCHEME = "package";
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
private static final String APP_PKG_NAME_22 = "pkg";
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
public static void showInstalledAppDetails(Context context, String packageName) {
Intent intent = new Intent();
final int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel >= 9) { // above 2.3
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
} else { // below 2.3
final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
: APP_PKG_NAME_21);
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, packageName);
}
context.startActivity(intent);
}
आपको बहुत बहुत धन्यवाद! इसने मुझे बहुत समय बचाया। "2.3 से ऊपर" टिप्पणी को "2.3 और ऊपर" में बदला जाना चाहिए? – kristianlm
यह किसी भी स्थापित अनुप्रयोग के लिए पूरी तरह से काम करता है। हालांकि अगर मैं किसी भी सिस्टम एप्लिकेशन की सेटिंग्स खोलने की कोशिश करता हूं, तो एक खाली स्क्रीन आती है। –
इसके अलावा हमें intent.setFlags (इरादा) जोड़ने की आवश्यकता है।FLAG_ACTIVITY_NEW_TASK); दोनों बयान में। यानी अगर() {... यहां ...} और {... यहां ...} –
से एपीआई स्तर 9 (Android 2.3) आप के साथ एक आशय शुरू कर सकते हैं android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS। इस प्रकार:
packageName = "your.package.name.here"
try {
//Open the specific App Info page:
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
} catch (ActivityNotFoundException e) {
//e.printStackTrace();
//Open the generic Apps page:
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
startActivity(intent);
}
पुराना सवाल है, सुधार जवाब:
/**
* <p>Intent to show an applications details page in (Settings) com.android.settings</p>
*
* @param context The context associated to the application
* @param packageName The package name of the application
* @return the intent to open the application info screen.
*/
public static Intent newAppDetailsIntent(Context context, String packageName) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("package:" + packageName));
return intent;
} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.FROYO) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.android.settings",
"com.android.settings.InstalledAppDetails");
intent.putExtra("pkg", packageName);
return intent;
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.android.settings",
"com.android.settings.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName", packageName);
return intent;
}
मैं 23+ SDK में अनुप्रयोग विवरण सेटिंग खोलने के लिए जब उपयोगकर्ता अतीत में अनुमति अनुरोध को ठुकरा दिया क्रम में पाओलो समाधान का इस्तेमाल किया और अनुमति अनुरोध प्रणाली संवाद में "दोबारा न पूछें" विकल्प का चयन करें।
लेकिन इस मामले में मैंने सीधे getPackageName()
विधि का उपयोग किया।
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
- 1. मैं Win7 प्रोग्रामेटिक रूप से स्क्रीन रेज़ोल्यूशन डायलॉग से मॉनीटर नंबर कैसे प्राप्त कर सकता हूं?
- 2. एंड्रॉइड: हार्डवेयर जानकारी प्रोग्रामेटिक रूप से
- 3. क्या मैं एप्लिकेशन # ऑनक्रेट() से सेवा शुरू कर सकता हूं?
- 4. मैं सिल्वरलाइट एप्लिकेशन से प्रोग्रामेटिक रूप से maxItemsInObjectGraph प्रॉपर्टी कैसे सेट कर सकता हूं?
- 5. मैं प्रोग्रामेटिक रूप से संपर्क कैसे जोड़ सकता हूं?
- 6. प्रोग्रामेटिक रूप से एंड्रॉइड
- 7. प्रोग्रामेटिक रूप से एंड्रॉइड
- 8. अमेज़ॅन लिनक्स एएमआई में मैं स्वचालित रूप से node.js एप्लिकेशन कैसे शुरू कर सकता हूं?
- 9. मैं प्रोग्रामेटिक रूप से विंडोज़ फॉर्म कैसे बना सकता हूं?
- 10. मैं पृष्ठभूमि सेवा से किसी एंड्रॉइड गतिविधि में जानकारी कैसे अपडेट कर सकता हूं
- 11. एंड्रॉइड में प्रोग्रामेटिक रूप से लॉक स्क्रीन कैसे करें?
- 12. एंड्रॉइड प्रोग्रामेटिक रूप से
- 13. एंड्रॉइड प्रोग्रामेटिक रूप से
- 14. एंड्रॉइड स्क्रीन पर माउस पॉइंटर को प्रोग्रामेटिक रूप से
- 15. एंड्रॉइड: क्या मैं गतिविधि के इरादे फ़िल्टर को प्रोग्रामेटिक रूप से सक्षम/अक्षम कर सकता हूं?
- 16. मैं प्रोग्राम आइकन प्रोग्रामेटिक रूप से एंड्रॉइड
- 17. मैं रैम डिस्क प्रोग्रामेटिक रूप से कैसे बना सकता हूं?
- 18. मैं कोको विंडो प्रोग्रामेटिक रूप से कैसे बना सकता हूं?
- 19. एंड्रॉइड प्रोग्रामेटिक रूप से
- 20. मैं Java3D को तेज़ी से कैसे शुरू कर सकता हूं?
- 21. मैं एंड्रॉइड एप्लिकेशन विंडो का आकार कैसे प्राप्त कर सकता हूं, न कि भौतिक स्क्रीन आकार?
- 22. एप्लिकेशन शुरू करने पर ब्लैक स्क्रीन से कैसे बचें
- 23. एंड्रॉइड में प्रोग्रामेटिक रूप से स्क्रीन नींद को अक्षम करना?
- 24. मैं कक्षा से प्रोग्रामेटिक रूप से स्टोरीबोर्ड कैसे लोड कर सकता हूं?
- 25. संपादन जानकारी .plist संभव प्रोग्रामेटिक रूप से?
- 26. एंड्रॉइड एसएमएस प्रोग्रामेटिक रूप से
- 27. लिनक्स में प्रोग्रामेटिक रूप से स्क्रीन को कैसे अलग करें?
- 28. एंड्रॉइड स्क्रीन लॉक/प्रोग्रामेटिक रूप से अनलॉक करें
- 29. ओएस एक्स टर्मिनल से मैं स्क्रीनसेवर (और स्क्रीन लॉक) कैसे शुरू कर सकता हूं?
- 30. मैं स्मार्टगिट से कमांड लाइन कैसे शुरू कर सकता हूं?
मैं बाद वाले की अनुशंसा नहीं करूंगा। क्या होगा यदि कोई दुर्भावनापूर्ण ऐप पैकेज का उपयोग करता है: com.android.settings? –
@ पाओलोरोवेली मैंने लिखा "आवश्यक रूप से अनुशंसित नहीं", लेकिन एक अलग कारण के लिए। मुझे नहीं लगता कि आप जो खतरे का उल्लेख करते हैं उससे बच सकते हैं; यदि दो ऐप्स एक ही इरादे (स्ट्रिंग) का उपयोग करते हैं, तो उपयोगकर्ता को हमेशा ऐप चुनने के लिए एक संवाद मिलेगा (जो जोखिम को थोड़ा कम करता है)। लेकिन यह भी ध्यान दें कि पहले दृष्टिकोण में पैरामीटर कुछ भी नहीं बल्कि एक स्ट्रिंग है: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_SETTINGS - इसलिए किसी दुर्भावनापूर्ण ऐप से कोई सुरक्षा नहीं है अगर यह com.android.settings पैकेज नाम का उपयोग करता है। –