您的位置:首页 > 其它

如何 “快速” 的监听应用安装完成,并将应用打开的问题?

2016-11-22 13:43 323 查看
提供一个思路,控制应用程序数据库,如果count改变的话就遍历看是否有你安装的程序,有的话就打开。这样就不取决广播时间。每个机型上操纵算法什么都有dalvik速度决定,达到统一。
查看源码后总结一下我的答案:通过系统application的URI获取应用程序数据库,对其注册contentObserver监听该数据库的变化,可以准确知道系统是否安装了程序或者卸载了程序。具体的代码如下:

Cursor curso = getContentResolver().query(Uri.parse("content://applications/search/"),null,null,null,null);

                getContentResolver().registerContentObserver(Uri.parse("content://applications/search/"),

                        true, contentObserver);

                /*application数据库的字段不是很明朗,源码里面提供了三个字段,

                 * public interface ApplicationColumns extends BaseColumns {

                        public static final String NAME = "name";

                        public static final String ICON = "icon";

                        public static final String URI = "uri";

                },虽然不多但是足够我们用,我们一般需要知道名字和uri*/

            }

        });

    }

   

    ContentObserver contentObserver =newContentObserver(newHandler()){

        @Override

        publicboolean deliverSelfNotifications(){

            // TODO Auto-generated method stub

            returnsuper.deliverSelfNotifications();

        }

        @Override

        publicvoid onChange(boolean selfChange){

            super.onChange(selfChange);

            /*数据库改变了,需要做相应的操作,比如打开应用程序*/

        }

       

    };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐