2011-11-28 14 views
15

है, मैं एक होम-स्क्रीन अनिवार्य रूप से एक होम-स्क्रीन विकसित कर रहा हूं, और इसे डिफ़ॉल्ट होमस्क्रीन ("कियोस्क" -प्लिकेशंस) के रूप में उपयोग किया जाना चाहिए।यह जांचने के लिए कि मेरा एप्लिकेशन डिफ़ॉल्ट लॉन्चर

क्या यह जांचने का कोई तरीका है कि मेरा लॉन्चर डिफ़ॉल्ट लॉन्चर है या नहीं? धन्यवाद!

Ps। मेरे यहाँ जवाब इसी प्रकार के उदाहरण है, लेकिन जीपीएस सेटिंग्स की जाँच के लिए

LocationManager alm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) { 
    Stuffs&Actions; 
} 

उत्तर

24

आप PackageManager से पसंदीदा गतिविधियों की सूची प्राप्त कर सकते हैं। getPreferredActivities() विधि का प्रयोग करें।

boolean isMyLauncherDefault() { 
    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); 
    filter.addCategory(Intent.CATEGORY_HOME); 

    List<IntentFilter> filters = new ArrayList<IntentFilter>(); 
    filters.add(filter); 

    final String myPackageName = getPackageName(); 
    List<ComponentName> activities = new ArrayList<ComponentName>(); 
    final PackageManager packageManager = (PackageManager) getPackageManager(); 

    // You can use name of your package here as third argument 
    packageManager.getPreferredActivities(filters, activities, null); 

    for (ComponentName activity : activities) { 
     if (myPackageName.equals(activity.getPackageName())) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

ठीक काम करता है। मैंने पैकेज नाम का तीसरा पैरामीटर के रूप में उपयोग किया और फिर 'गतिविधियों' सूची की लंबाई की जांच की। यदि यह 0 है, तो लॉन्चर नहीं है। –

+0

किस मामले में इस प्रश्न में एक से अधिक आइटम से "गतिविधियां" भरेंगी? –

+2

[getPreferredActivities] के लिए प्रलेखन (http://developer.android.com/reference/android/content/pm/PackageManager.html#getPreferredActivities%28java.util.List%3Candroid.content.IntentFilter%3E,%20java.util लिस्ट% 3Candroid.content.ComponentName% 3E,% 20java.lang.String% 29) सुझाव देता है कि पहला तर्क एक खाली सूची होना चाहिए जो विधि द्वारा पॉप्युलेट किया गया हो। जब आप ऐसी सूची दे रहे हैं जो पहले से ही आपके उदाहरण में आबादी वाला है तो व्यवहार वास्तव में क्या है? – achoo5000

5

मिला:

Which launcher is running?

यह मुझसे कहता है कि मेरा गतिविधि डिफ़ॉल्ट लांचर है या नहीं ..

+0

यह केवल आपको बताता है कि एक लांचर चल रहा है। यदि उदाहरण के लिए Google नाउ लॉन्चर और नोवा लॉन्चर दोनों चल रहे हैं, तो दोनों लौटाई गई सूची में होंगे। –

0
boolean isHomeApp() { 
    final Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
    if (res.activityInfo != null && getPackageName() 
      .equals(res.activityInfo.packageName)) { 
     return true; 
    } 
    return false; 
} 
0

Kotlin संस्करण:

val Context.isMyLauncherDefault: Boolean 
    get() = ArrayList<ComponentName>().apply { 
    packageManager.getPreferredActivities(
     arrayListOf(IntentFilter(ACTION_MAIN).apply { addCategory(CATEGORY_HOME) }), 
     this, 
     packageName 
    ) 
    }.isNotEmpty() 
संबंधित मुद्दे