第一次运行程序添加快捷方式,我是在SharedPreferences里面添加了一个字段标记是不是第一次运行。
我在Application的实现类的onCreate方法中判断
@Override public void onCreate() { super.onCreate(); appContext = getApplicationContext(); SharedPreferences shortcutpref = appContext.getSharedPreferences( "shortcut", Context.MODE_PRIVATE); boolean iscreated = shortcutpref.getBoolean("iscreated", false); if (!iscreated) { createDeskShortCut(); }
下面就是createDeskShortCut的实现:
/** * 创建快捷方式 */ public void createDeskShortCut() { // 创建快捷方式的Intent Intent shortcutIntent = new Intent( "com.android.launcher.action.INSTALL_SHORTCUT"); // 不允许重复创建 shortcutIntent.putExtra("duplicate", false); // 需要显示的名称 shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); // 快捷图片 Parcelable icon = Intent.ShortcutIconResource.fromContext( getApplicationContext(), R.drawable.logo); shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); Intent intent = new Intent(getApplicationContext(), WelcomeActivity.class); // 下面两个属性是为了当应用程序卸载时桌面 上的快捷方式会删除 intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.LAUNCHER"); // 点击快捷图片,运行的程序主入口 shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent); // 发送广播。OK sendBroadcast(shortcutIntent); // 在配置文件中声明已经创建了快捷方式 appContext.getSharedPreferences("shortcut", Context.MODE_PRIVATE) .edit().putBoolean("iscreated", true).commit(); // 2.3.3系统创建快捷方式不提示 if (android.os.Build.VERSION.SDK.equals("10")) { Toast.makeText( appContext, "已创建" + appContext.getResources().getString( R.string.app_name) + "快捷方式。", Toast.LENGTH_LONG).show(); } String handSetInfo = "手机型号:" + android.os.Build.MODEL + ",SDK版本:" + android.os.Build.VERSION.SDK + ",系统版本:" + android.os.Build.VERSION.RELEASE; Log.e("HANDINFO", handSetInfo); }
这种方法我测试了4.0以上的都没有问题,都是可以Toast提示创建的,但是用2.3.3运行的时候 快捷方式创建了,但是没有提示。
创建快捷方式是发一个广播,然后由系统为您创建,创建成功会自动提示,但是可能有兼容问题导致2.3.3没有提示。这里就手动添加以下了。
上面获取SDK版本 和 系统版本都是很常用的,记录以下:
"手机型号:" android.os.Build.MODEL
"SDK版本:" android.os.Build.VERSION.SDK
"系统版本:" android.os.Build.VERSION.RELEASE