Mam aplikację, która zmienia tapetę użytkowników. Chcę dodać skrót do Androida, aby użytkownik mógł zmienić tapetę bez konieczności pełnego otwierania aplikacji (głównym zastosowaniem jest powiązanie go z gestem w programie Nova Launcher, który pozwala wybrać skrót dla każdego gestu) .Uruchamianie aktywności ze skrótu zawsze uruchamia główną aktywność również
Mam wszystko działa, z jednym ogromnym problemem. Za każdym razem, gdy uruchamiany jest skrót, pojawia się moja niestandardowa akcja, ale następnie rozpoczyna się główna aktywność uruchamiania! To oczywiście nie jest pożądane i nie mogę zrozumieć, co się dzieje.
Oto kod ShortcutActivity:
public class ShortcutActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent = getIntent();
final String action = intent.getAction();
if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {
setupShortcut();
finish();
return;
} else {
Toast.makeText(this, "Do something interesting.", Toast.LENGTH_SHORT).show();
finish();
}
}
void setupShortcut() {
Intent shortcutIntent = new Intent("CHANGE");
shortcutIntent.setClass(this, getClass());
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_title));
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
setResult(RESULT_OK, intent);
}
}
Oto moje (uproszczone) manifest:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/title_activity"
android:theme="@style/AppTheme">
<activity
android:name=".WallpaperSettings"
android:label="@string/title_activity_wallpaper_settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ShortcutActivity"
android:theme="@android:style/Theme.NoDisplay"
android:label="@string/shortcut_title">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
Czy to w ogóle możliwe do zrobienia bez spustu główną działalnością wyrzutnia?
można dodać kod gdzie android.intent.action.CREATE_SHORTCUT jest zwolniony. Może musisz uruchomić aplikację w nowym zadaniu. – nandeesh
Warto to zobaczyć. Co robi uruchomienie go w nowym zadaniu i dlaczego nie byłoby to inne działanie? Aby odpowiedzieć na twoje pytanie, uważam, że mogę dodać tę flagę do intencji, której używam. – RealCasually
@ RealCasually, czy to zostało już rozwiązane? – Droidekas