zoukankan      html  css  js  c++  java
  • android桌面快捷方式添加 删除 更新 自动运行

    添加快捷方式  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>  

       Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");

           shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name));

           shortcutIntent.putExtra("duplicate", false);

           Intent intent = new Intent();

           intent.setComponent(new ComponentName(getPackageName(), MainActivity.class.getName()));

           shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);

           shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));

          sendBroadcast(shortcutIntent);

    public class BootReceiver extends BroadcastReceiver {   

        public void onReceive(Context context, Intent intent) {  

            //接收广播:系统启动完成后运行程序   

            if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {   

                 Intent newIntent = new Intent(context, searchDemo.class);   

                 newIntent.setAction("android.intent.action.MAIN");        

                 newIntent.addCategory("android.intent.category.LAUNCHER");       

                 newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);           

                 context.startActivity(newIntent);   

            }   

            //接收广播:设备上新安装了一个应用程序包后自动启动新安装应用程序。   

            if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {   

                String packageName = intent.getDataString().substring(8);   

                System.out.println("---------------" + packageName);   

                Intent newIntent = new Intent();   

               newIntent.setClassName(packageName,packageName+ ".searchDemo");

               newIntent.setAction("android.intent.action.MAIN");     

               newIntent.addCategory("android.intent.category.LAUNCHER");            

               newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   

               context.startActivity(newIntent);   

            }   

     //接收广播:设备上删除了一个应用程序包。   :这个貌似需要root权限

    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>  

            if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) { 

           String ACTION_UNINSTALL_SHORTCUT ="com.android.launcher.action.UNINSTALL_SHORTCUT";   

         Intent intent3 = new Intent(ACTION_UNINSTALL_SHORTCUT );   

          intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, R.string.app_name);   

         // 要删除的应用程序的ComponentName,即应用程序包名+activity的名字   

         ComponentName comp = new ComponentName("搜索","searchDemo");   

          intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent()   

          .setComponent(comp).setAction("android.intent.action.MAIN"));   

         context.sendBroadcast(intent);  

            }   

        }  

    来自: http://hi.baidu.com/lfcomputer/blog/item/15c31a6649bb6a37ab184c9b.html
  • 相关阅读:
    MyBaits resultMap 返回值与对象不匹配处理
    Play 常见命令
    Yarn源码分析之MRAppMaster:作业运行方式Local、Uber、Non-Uber
    Yarn源码分析之事件异步分发器AsyncDispatcher
    MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案的一些思考
    Yarn源码分析之MapReduce作业中任务Task调度整体流程(一)
    MapReduce源码分析之作业Job状态机解析(一)简介与正常流程浅析
    Yarn源码分析之如何确定作业运行方式Uber or Non-Uber?
    Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(二)
    Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)
  • 原文地址:https://www.cnblogs.com/xiaoxiaoboke/p/2093156.html
Copyright © 2011-2022 走看看