[Android開発実戦]Androidにショートカットをデスクトップに追加する2つの方法
4399 ワード
転載は出典を明記してください.http://blog.csdn.net/ruils/article/details/16923201
最近、金山クリーンアップマスターのワンクリック加速ショートカットアニメーションの実現(原文)を検討し、Androidにショートカットをデスクトップに追加する方法もまとめた.
方法1:
私は受動的なアクション方式と呼んでいます.
高バージョンのandroidシステム(android 4.3,4.4)では、Lanucherのプログラムリストウィジェットから、あるウィジェットを長押しして追加し、低バージョンのandroidシステムでは、デスクトップを長押ししてショートカットを追加するオプションが表示されます.
ウィジェットやショートカットの選択項目に独自のプログラムが表示されるように、
最初にAndroidManifest.xmlで「android.intent.action.CREATE_SHORTCUT」に応答できるActivityを説明します.
例:
次に、このActivityに応答するショートカットのプロパティを設定します.
最後に、setResult(RESULT_OK、resultIntent)を覚えておいてください.なぜ受動的なActionモードと呼ばれているのか、原因はここにある.Lanucherは私にショートカットを探して、私はそれをあげて、どのようにあげたのか、このsetResult(RESULT_OK、resultIntent);
方式2:
私はアクティブな放送方式と呼んでいます.
まず、放送をする以上、誰に送りますか?もちろんLanucherに送って、Lanucherは要りませんか、それでは私は権限を明らかにして、そのボスに挨拶して、それは要りません.社長は誰ですか.Androidシステムも.
次に、ブロードキャストのActivityにショートカットのプロパティを設定します.
ACTION_INSTALL_SHORTCUTは
public static final String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
最後にショートカットをLanucherに送りました.この方法はアクティブで、私たちのコードロジックではいつでもブロードキャストでショートカットをLanucherに送ることができます.
この2つの方法の実現原理を知りたいなら、Lanucherコードを見てください!
第一の方法の実現原理は以下の通りである.
packages/apps/Launcher2/src/com/android/launcher2/Launcher.java 1875行
第2の方法の実現原理は以下の通りである.
packages/apps/Launcher2/src/com/android/launcher2/InstallShortcutReceiver.java
最後に、この文章が好きなら、いいね!
サンプルソースのダウンロード:http://download.csdn.net/detail/u012379847/6604299
どちらもMainActivityに書きましたので、ご注意ください
最近、金山クリーンアップマスターのワンクリック加速ショートカットアニメーションの実現(原文)を検討し、Androidにショートカットをデスクトップに追加する方法もまとめた.
方法1:
私は受動的なアクション方式と呼んでいます.
高バージョンのandroidシステム(android 4.3,4.4)では、Lanucherのプログラムリストウィジェットから、あるウィジェットを長押しして追加し、低バージョンのandroidシステムでは、デスクトップを長押ししてショートカットを追加するオプションが表示されます.
ウィジェットやショートカットの選択項目に独自のプログラムが表示されるように、
最初にAndroidManifest.xmlで「android.intent.action.CREATE_SHORTCUT」に応答できるActivityを説明します.
例:
次に、このActivityに応答するショートカットのプロパティを設定します.
Intent shortcutIntent = new Intent();
// Activity, Lanucher , 。
shortcutIntent.setComponent(new ComponentName(getPackageName(),
getPackageName() + "."
+ AnimationActivity.class.getSimpleName()));
//
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_NEW_TASK);
Intent resultIntent = new Intent();
//
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this,
R.drawable.shortcut_proc_clean));
// Intent
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
//
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
getString(R.string.app_name));
setResult(RESULT_OK, resultIntent);
finish();
最後に、setResult(RESULT_OK、resultIntent)を覚えておいてください.なぜ受動的なActionモードと呼ばれているのか、原因はここにある.Lanucherは私にショートカットを探して、私はそれをあげて、どのようにあげたのか、このsetResult(RESULT_OK、resultIntent);
方式2:
私はアクティブな放送方式と呼んでいます.
まず、放送をする以上、誰に送りますか?もちろんLanucherに送って、Lanucherは要りませんか、それでは私は権限を明らかにして、そのボスに挨拶して、それは要りません.社長は誰ですか.Androidシステムも.
次に、ブロードキャストのActivityにショートカットのプロパティを設定します.
Intent shortcutIntent = new Intent();
// Activity, Lanucher , 。
shortcutIntent.setComponent(new ComponentName(getPackageName(),
getPackageName() + "."
+ AnimationActivity.class.getSimpleName()));
//
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_NEW_TASK);
Intent resultIntent = new Intent();
//
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this,
R.drawable.shortcut_proc_clean));
// Intent
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
//
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
getString(R.string.app_name));
resultIntent.setAction(ACTION_INSTALL_SHORTCUT);
sendBroadcast(resultIntent);
ACTION_INSTALL_SHORTCUTは
public static final String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
最後にショートカットをLanucherに送りました.この方法はアクティブで、私たちのコードロジックではいつでもブロードキャストでショートカットをLanucherに送ることができます.
この2つの方法の実現原理を知りたいなら、Lanucherコードを見てください!
第一の方法の実現原理は以下の通りである.
packages/apps/Launcher2/src/com/android/launcher2/Launcher.java 1875行
第2の方法の実現原理は以下の通りである.
packages/apps/Launcher2/src/com/android/launcher2/InstallShortcutReceiver.java
最後に、この文章が好きなら、いいね!
サンプルソースのダウンロード:http://download.csdn.net/detail/u012379847/6604299
どちらもMainActivityに書きましたので、ご注意ください
// -----> Action 。
if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {
Log.d(TAG, "action " + action);
setResult(RESULT_OK, resultIntent);
finish();
} else {
// ----->
Log.d(TAG, "sendBroadcast " + resultIntent);
resultIntent.setAction(ACTION_INSTALL_SHORTCUT);
sendBroadcast(resultIntent);
}