سؤال

أحاول إنشاء اختصار لسطح المكتب إلى أحد نشاطي في Android. أستخدم الرمز الذي يعمل في كل مثال على توتو قرأته:

    final Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    ComponentName name = new ComponentName(getPackageName(), ".MyActivity");
    shortcutIntent.setComponent(name);

    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


    final Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);

    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "blabla");
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);

    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    sendBroadcast(intent);
    finish();

وأضفت الإجراء الرئيسي إلى نشاطي:

    <activity android:label="@string/app_name" android:name=".MyActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>

والنتيجة هي أن التطبيق لا يريد الإطلاق!

في logcat يبدو كل شيء على ما يرام:

10-01 01:17:51.591: INFO/ActivityManager(2424): Starting activity: Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=my.package.name/.MyActivity bnds=[125,384][235,522] (has extras) }

ويخبرني المنزل أن التطبيق غير مثبت.

الرجاء مساعدتي ، أنا ضائع تمامًا وأقضي بضع ساعات في محاولة لحل المشكلة وقراءة جميع المعلومات التي يمكنني الحصول عليها.

شكرا جزيلا!

هل كانت مفيدة؟

المحلول

جرب هذا:

  1. تخلص من <intent-filter>
  2. تخلص من ACTION_MAIN وفقط استخدام new Intent(this, MyActivity.class)
  3. إضافة Android: تصدير = "صحيح" إلى عنصرك في البيان

نصائح أخرى

يمكن أن يحدث هذا إذا تم إعلان نشاطك مرتين في AndroidManifest.xml ، أولاً كقاذفة ثم أعلنت للتو مثل:

<activity android:name=".MyActivity" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top