创建快捷方式,让被HOME键退出的APP恢复原状

1.Android Maniftest.xml 中,每个Activity添加如下属性:

android:alwaysRetainTaskState="true"

2. 创建快捷方式

private static final String SHORTCUT_UNINSTALL = "com.android.launcher.action.UNINSTALL_SHORTCUT";


public static void creatShortCut(Activity activity) 
{ 
   
deleteCallShortcut(activity);
   
   int resourceId = R.drawable.ic_launcher;
Intent intent = new Intent(); 
intent.setClass(activity, SplashActivity.class);
/*以下两句是为了在卸载应用的时候同时删除桌面快捷方式*/ 
intent.setAction("android.intent.action.MAIN"); 
intent.addCategory("android.intent.category.LAUNCHER"); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
//不允许重复创建 
shortcutintent.putExtra("duplicate", false); 
//需要现实的名称 
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, activity.getResources().getString(R.string.app_name)); 
//快捷图片 
Parcelable icon = Intent.ShortcutIconResource.fromContext(activity.getApplicationContext(), resourceId); 
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); 
//点击快捷图片,运行的程序主入口 
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent); 
//发送广播。OK 
activity.sendBroadcast(shortcutintent); 
} 

//删除快捷方式
private static void deleteCallShortcut(Activity activity) {
    Intent shortcut = new Intent(SHORTCUT_UNINSTALL);  
    //名字要和创建时的一样  
    shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, activity.getResources().getString(R.string.app_name));  
      
    //这里的intent要和创建时的intent设置一致  
    Intent intent = new Intent(); 
   intent.setClass(activity, SplashActivity.class);//SplashActivity.class);
   /*以下两句是为了在卸载应用的时候同时删除桌面快捷方式*/ 
   intent.setAction("android.intent.action.MAIN"); 
   intent.addCategory("android.intent.category.LAUNCHER");             
      
    //发送广播以删除shortcut  
   activity.sendBroadcast(shortcut);  
      
}  



   intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);  //这一句很关键 是从系统创建的快捷方式中列出它的值找到的。



public static boolean hasShortcut(Context cx) {
       boolean result = false;
       // 获取当前应用名称
       String title = null;
       try {
           final PackageManager pm = cx.getPackageManager();
           title = pm.getApplicationLabel(
                   pm.getApplicationInfo(cx.getPackageName(),
                           PackageManager.GET_META_DATA)).toString();
       } catch (Exception e) {
       }

       final String uriStr;
       if (android.os.Build.VERSION.SDK_INT < 8) {
           uriStr = "content://com.android.launcher.settings/favorites?notify=true";
       } else {
           uriStr = "content://com.android.launcher2.settings/favorites?notify=true";
       }
       final Uri CONTENT_URI = Uri.parse(uriStr);
//     final Cursor c = cx.getContentResolver().query(CONTENT_URI, null,
//             "title=?", new String[] { title }, null);
//     if (c != null && c.getCount() > 0) {
//         result = true;
//     }
       
       final Cursor c = cx.getContentResolver().query(CONTENT_URI, null,
               "", new String[]{}, null);
       if (c != null && c.getCount() > 0) {
          for(int i=0; i<c.getCount(); i++){
             c.moveToPosition(i);
             for(int j=0; j<c.getColumnCount();j++){
                try{
                   if(j == 15){
//                    byte[] blob = c.getBlob(j);
//                    if(blob != null)
//                       for(int x = 0; x<blob.length; x++){
//                          Log.e("","blog["+x+"]:"+blob[x]);
//                       }
                   }
                   else
                      COM.LOGE("", "i:" + i + "j:" + j + " name:" + c.getColumnName(j) + " value:" + c.getString(j));
                }
                catch(RuntimeException e){
                   e.printStackTrace();
                }
             }
             c.moveToNext();
          }
           result = true;
       }
       
       return result;
   }

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、 3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdmE.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值