निम्नलिखित उपयोग करके देखें:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
एक डिफ़ॉल्ट कार्रवाई पहले से ही सेट है (तुम्हारा), तो आपको पहले कॉल कर सकते हैं:
getPackageManager().clearPackagePreferredActivities(getPackageName());
डिफ़ॉल्ट कार्रवाई आपका नहीं है, तो आप इसे प्रोग्रामेटिक रूप से साफ़ नहीं कर सकता है, आप यह जांच सकते हैं कि अन्य ऐप डिफ़ॉल्ट रूप से सेट किया गया है या कोई संदेश दिखाया गया है ..
private boolean isMyLauncherDefault() {
PackageManager localPackageManager = getPackageManager();
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.HOME");
String str = localPackageManager.resolveActivity(intent,
PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;
return str.equals(getPackageName());
}
अन्य एप्लिकेशन के मामले में एक समाधान के रूप में डिफ़ॉल्ट के रूप में सेट किया गया है, तो आप एक fake
घर, इसे स्थापित और फिर उसे अनइंस्टॉल (इस वसीयत सिस्टम डिफ़ॉल्ट एप्लिकेशन स्पष्ट करने के forse) ... बनाए जा सकते हैं
प्रकट .xml
<activity
android:name="FakeHome" android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
FakeHome.java
public class FakeHome extends Activity {
}
कहीं
if(!isMyLauncherDefault()) {
PackageManager p = getPackageManager();
ComponentName cN = new ComponentName(Activity.this, FakeHome.class);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
startActivity(selector);
p.setComponentEnabledSetting(cN, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
यह कोड डिफ़ॉल्ट लॉन्चर पहले से सेट होने पर संवाद पॉप अप नहीं करेगा। –
क्या आपने कभी इसे काम करने के लिए प्राप्त किया था? – portfoliobuilder
'getPreferredActivities()' का 'फ़िल्टर' पैरामीटर आउटपुट पैरामीटर है। कॉल से पहले कोई फ़िल्टर आइटम जोड़ना इससे पहले कोई प्रभाव नहीं पड़ता है। –