मैंने समाधान दो की कोशिश की, लेकिन मुद्दा यह है कि एक ही गतिविधि यह पता नहीं लगा सकती कि कौन सा लॉन्चर आइकन इस्तेमाल किया गया था (कृपया मुझे बताएं कि क्या मैं गलत हूं)।
मेरा समाधान दो "डमी" गतिविधियों को जोड़ना था, जो तब मुख्य गतिविधि लॉन्च करते थे जो सही "पृष्ठ" संख्या है। इस दृष्टिकोण के साथ कठिनाई ठीक से कार्य ढेर को संभालना है। जब लॉन्चर का चयन किया जाता है, तो डमी गतिविधि लॉन्च की जानी चाहिए, और इसे मुख्य गतिविधि के लिए एक इरादा भेजना होगा। एंड्रॉइड आपको ऐसा करने से रोकने के लिए वास्तव में कड़ी मेहनत करता है, और केवल अंतिम गतिविधि को सामने लाएं।
डमी गतिविधियों (LaunchActivity2 के लिए समान):
public class LaunchActivity1 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent newIntent = new Intent(this, MainActivity.class);
newIntent.putExtra(MainActivity.EXTRA_PAGE, 1);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(newIntent);
finish();
}
}
मुख्य गतिविधि में:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewPager viewPager = (ViewPager)findViewById(R.id.MainViewPager);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
int page = getIntent().getIntExtra(EXTRA_PAGE, -1);
if(page >= 0 && page <= NUM_ITEMS)
viewPager.setCurrentItem(page);
}
public void onNewIntent(Intent intent) {
if(intent.hasExtra(EXTRA_PAGE)) {
int page = intent.getIntExtra(EXTRA_PAGE, -1);
ViewPager viewPager = (ViewPager)findViewById(R.id.MainViewPager);
if(page >= 0 && page <= NUM_ITEMS)
viewPager.setCurrentItem(page);
}
}
AndroidManifest.xml
यह सबसे अच्छा मैं के साथ आ सकता है:
<!-- LaunchActivity2 is similar -->
<activity android:name=".LaunchActivity1" android:label="Launch 1"
android:clearTaskOnLaunch="true"
android:noHistory="true"
android:taskAffinity="Launch1"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity"
android:label="My App"
android:clearTaskOnLaunch="true"
android:finishOnTaskLaunch="true"
android:launchMode="singleTask"
android:taskAffinity="MyApp">
</activity>
विभिन्न कार्य affinities के साथ मुद्दा यह है कि दोनों लॉन्चर्स, साथ ही मुख्य कार्य, "हालिया अनुप्रयोगों" सूची में दिखाई देते हैं।
मैं किसी और के लिए इस दृष्टिकोण की अनुशंसा नहीं करता - बल्कि केवल एक लॉन्चर आइकन का उपयोग करें।
समाधान 2 के लिए, आप कैसे पता लगाते हैं कि कौन से लॉन्चर आइकन का उपयोग किया गया था? क्या यह जानकारी लॉन्चिंग मंशा में मौजूद है? – Ralf
आप उस उद्देश्य को अतिरिक्त जोड़ सकते हैं जो टुकड़ों को संभालने वाली गतिविधि शुरू करता है। –
मैं दो होम स्क्रीन लॉन्चर्स को गतिविधि शुरू करने के लिए चाहता हूं, इसलिए मैं उन उद्देश्यों में कोई अतिरिक्त जोड़ नहीं पा रहा हूं। – Ralf