Android手机中生成快捷方式有两种情况,一种是由应用直接在桌面生成;一种是长按桌面,在弹出的快捷菜单中生成。

第一种方式是通过广播(Broadcast)的形式向Luncher发送请求生成快捷方式的。

以下截取该广播的注册信息

        <!-- Intent received used to install shortcuts from other applications -->        <receiver            android:name="com.android.launcher2.InstallShortcutReceiver"            android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">            <intent-filter>                <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />            </intent-filter>        </receiver>

由此可以看出,要在桌面上创建快捷方式就需要权限了:
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT。
所以在我们的manifest.xml文件中,我们需要加入下面这段话:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>


private void createShortcut() {//创建快捷方式的Intent        Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");        //不允许重复创建        shortcutIntent.putExtra("duplicate", false);        //快捷方式名称        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_name));        //快捷图片        Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher_shortcut);        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);        //点击快捷图片,运行的程序主入口        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , TargetActivity.class));        //发送广播。OK        sendBroadcast(shortcutIntent);}


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.shortcuttest"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="15" />    <!-- 声明 创建和删除快捷方式时声明权限 -->    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>        <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.shortcuttest.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>                <activity android:name="com.example.shortcuttest.TargetActivity">            <!-- 目标Activity 需要具备 LAUNCHER功能-->            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>            </application></manifest>



注意:需要成为快捷方式入口的Activity必须增加以下配置,否则点击快捷方式的时候会报错

<intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>




更多相关文章

  1. Android用户apk如何获得系统(system)权限
  2. [android q] android特许权限白名单
  3. Android权限管理之RxPermission解决Android 6.0 适配问题
  4. Android Studio第四十期 - 上传头像功能支持权限管理
  5. Android 应用程序如何获取system权限
  6. android 自定义封装android 6.0以上动态权限添加工具类

随机推荐

  1. Vue 中的 .sync 修饰符stop修饰符prevent
  2. MVC架构模式思想
  3. 硬盘亮黄灯没有及时处理?服务器数据恢复案
  4. PHP初识字符串
  5. 一些小例子
  6. 聊一聊如何把SSL证书安装到小鸟云服务器
  7. 关于开发视图
  8. 小鸟云服务器 新增香港高防云服务器,抵御D
  9. VMWARE ESX SERVER虚拟化数据恢复过程总
  10. 利用表格常用标签制造一个商品列表