إنشاء اختصارات ثانية في المشغل
-
01-10-2019 - |
سؤال
أقوم بإنشاء تطبيق منزلي رائع في Android.
نظرًا لأن هذا تطبيق منزلي ، لا أريد أن تظهر لها في القاذفة ، في قائمة جميع التطبيقات.
هذا سهل للغاية ، لكن الآن أود أن تظهر إعدادات هذا التطبيق. لذلك ، قمت بإنشاء تفضيلات طلبي بهذه الطريقة في البيان:
<activity android:name=".Preferences" android:label="@string/application_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
هذا العمل بشكل جيد ولدي أيقونة إضافية في المشغل!
المشكلة الوحيدة هي أنه لا يوجد شيء يحدث عند النقر على الرمز. لذلك ، يمكنني تشغيل تفضيلاتي من داخل التطبيق:
final Intent preferences = new Intent(Launcher.this,Preferences.class);
menu.add(0, MENU_PREFERENCES, 0, R.string.application_name).setIcon(
R.drawable.ic_menu_preferences).setAlphabeticShortcut('F').setIntent(
preferences);
لذا ، لماذا يكون الاختصار في المشغل عديم الفائدة تمامًا ولا يطلق أي شيء؟
المزيد من المعلومات هنا:
سجل عند إطلاقه من داخل التطبيق (يتم إطلاق التفضيلات ، وعملت بلا عيب):
08-25 13:13:03.009: INFO/ActivityManager(63): Starting activity: Intent { cmp=com.myapp.home/.Preferences }
عندما أطلق من قاذفة (لا شيء يحدث):
08-25 13:13:45.489: INFO/ActivityManager(63): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.myapp.home/.Preferences }
نشاطي:
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
المحلول
فقط وجدت شيئا! (و BTW ، ما هو أفضل إجراء لاستخدامه عندما وجدت إجابة على سؤالي الخاص؟ هل يجب أن أجيب على نفسي؟ هنا ..)
اضطررت إلى استخدام ذلك في الظهور:
<activity android:clearTaskOnLaunch="true" android:launchMode="singleTask" android:stateNotNeeded="true" (...other parameters...)>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
هذا العمل بشكل جيد!