Ini pertanyaan lama, tetapi masih aktif karena tidak ada fitur Android eksplisit. Dan orang-orang dari facebook menemukan pekerjaan - entah bagaimana. Hari ini, saya menemukan cara yang bekerja untuk saya. Tidak sempurna (lihat keterangan di akhir jawaban ini) tetapi berhasil!
Gagasan utamanya adalah, saya memperbarui ikon pintasan aplikasi saya, yang dibuat oleh peluncur di layar beranda. Ketika saya ingin mengubah sesuatu pada ikon shortcut, saya menghapusnya terlebih dahulu dan membuatnya kembali dengan bitmap baru.
Ini kodenya. Ini memiliki tombol increment. Saat ditekan, pintasan diganti dengan yang memiliki nomor penghitungan baru.
Pertama, Anda memerlukan dua izin ini dalam manifes Anda:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
Maka Anda memerlukan dua metode ini untuk menginstal dan menghapus instalan pintas. The shortcutAddMetode menciptakan bitmap dengan nomor di dalamnya. Ini hanya untuk menunjukkan bahwa itu benar-benar berubah. Anda mungkin ingin mengubah bagian itu dengan sesuatu, Anda ingin di aplikasi Anda.
private void shortcutAdd(String name, int number) {
// Intent to be send, when shortcut is pressed by user ("launched")
Intent shortcutIntent = new Intent(getApplicationContext(), Play.class);
shortcutIntent.setAction(Constants.ACTION_PLAY);
// Create bitmap with number in it -> very default. You probably want to give it a more stylish look
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Paint paint = new Paint();
paint.setColor(0xFF808080); // gray
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(50);
new Canvas(bitmap).drawText(""+number, 50, 50, paint);
((ImageView) findViewById(R.id.icon)).setImageBitmap(bitmap);
// Decorate the shortcut
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
// Inform launcher to create shortcut
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
}
private void shortcutDel(String name) {
// Intent to be send, when shortcut is pressed by user ("launched")
Intent shortcutIntent = new Intent(getApplicationContext(), Play.class);
shortcutIntent.setAction(Constants.ACTION_PLAY);
// Decorate the shortcut
Intent delIntent = new Intent();
delIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
delIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
// Inform launcher to remove shortcut
delIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(delIntent);
}
Dan akhirnya, berikut adalah dua pendengar untuk menambahkan pintasan pertama dan memperbarui pintasan dengan penghitung yang bertambah.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
findViewById(R.id.add).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
shortcutAdd("changeIt!", count);
}
});
findViewById(R.id.increment).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
shortcutDel("changeIt!");
count++;
shortcutAdd("changeIt!", count);
}
});
}
Catatan:
Cara ini juga berfungsi jika Aplikasi Anda mengontrol lebih banyak pintasan di layar beranda, misalnya dengan tambahan yang berbeda di menu Intent. Mereka hanya perlu nama yang berbeda sehingga yang benar dihapus dan diinstal ulang.
Penanganan pintasan terprogram di Android adalah fitur Android yang terkenal, banyak digunakan tetapi tidak didukung secara resmi. Tampaknya berfungsi pada peluncur default dan saya tidak pernah mencobanya di tempat lain. Jadi jangan salahkan saya, ketika Anda mendapatkan email pengguna ini "Ini tidak berfungsi pada XYZ saya, double root, ponsel super blasted"
Peluncur menulis Toastkapan pintasan diinstal dan yang ketika dihapus. Jadi saya mendapatkan dua Toasts setiap kali saya mengubah ikon. Ini tidak sempurna, tapi yah, selama sisa aplikasi saya sempurna ...