zoukankan      html  css  js  c++  java
  • android.content.UriMatcher

    Utility class to aid in matching URIs in content providers.

    To use this class, build up a tree of UriMatcher objects. For example:

        private static final int PEOPLE = 1;
        private static final int PEOPLE_ID = 2;
        private static final int PEOPLE_PHONES = 3;
        private static final int PEOPLE_PHONES_ID = 4;
        private static final int PEOPLE_CONTACTMETHODS = 7;
        private static final int PEOPLE_CONTACTMETHODS_ID = 8;
    
        private static final int DELETED_PEOPLE = 20;
    
        private static final int PHONES = 9;
        private static final int PHONES_ID = 10;
        private static final int PHONES_FILTER = 14;
    
        private static final int CONTACTMETHODS = 18;
        private static final int CONTACTMETHODS_ID = 19;
    
        private static final int CALLS = 11;
        private static final int CALLS_ID = 12;
        private static final int CALLS_FILTER = 15;
    
        private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    
        static
        {
            sURIMatcher.addURI("contacts", "people", PEOPLE);
            sURIMatcher.addURI("contacts", "people/#", PEOPLE_ID);
            sURIMatcher.addURI("contacts", "people/#/phones", PEOPLE_PHONES);
            sURIMatcher.addURI("contacts", "people/#/phones/#", PEOPLE_PHONES_ID);
            sURIMatcher.addURI("contacts", "people/#/contact_methods", PEOPLE_CONTACTMETHODS);
            sURIMatcher.addURI("contacts", "people/#/contact_methods/#", PEOPLE_CONTACTMETHODS_ID);
            sURIMatcher.addURI("contacts", "deleted_people", DELETED_PEOPLE);
            sURIMatcher.addURI("contacts", "phones", PHONES);
            sURIMatcher.addURI("contacts", "phones/filter/*", PHONES_FILTER);
            sURIMatcher.addURI("contacts", "phones/#", PHONES_ID);
            sURIMatcher.addURI("contacts", "contact_methods", CONTACTMETHODS);
            sURIMatcher.addURI("contacts", "contact_methods/#", CONTACTMETHODS_ID);
            sURIMatcher.addURI("call_log", "calls", CALLS);
            sURIMatcher.addURI("call_log", "calls/filter/*", CALLS_FILTER);
            sURIMatcher.addURI("call_log", "calls/#", CALLS_ID);
        }
    

    Then when you need to match against a URI, call match(Uri), providing the URL that you have been given. You can use the result to build a query, return a type, insert or delete a row, or whatever you need, without duplicating all of the if-else logic that you would otherwise need. For example:

        public String getType(Uri url)
        {
            int match = sURIMatcher.match(url);
            switch (match)
            {
                case PEOPLE:
                    return "vnd.android.cursor.dir/person";
                case PEOPLE_ID:
                    return "vnd.android.cursor.item/person";
    ... snip ...
                    return "vnd.android.cursor.dir/snail-mail";
                case PEOPLE_ADDRESS_ID:
                    return "vnd.android.cursor.item/snail-mail";
                default:
                    return null;
            }
        }
    

    instead of:

        public String getType(Uri url)
        {
            List pathSegments = url.getPathSegments();
            if (pathSegments.size() >= 2) {
                if ("people".equals(pathSegments.get(1))) {
                    if (pathSegments.size() == 2) {
                        return "vnd.android.cursor.dir/person";
                    } else if (pathSegments.size() == 3) {
                        return "vnd.android.cursor.item/person";
    ... snip ...
                        return "vnd.android.cursor.dir/snail-mail";
                    } else if (pathSegments.size() == 3) {
                        return "vnd.android.cursor.item/snail-mail";
                    }
                }
            }
            return null;
        }
    
  • 相关阅读:
    linux 解压tgz 文件指令
    shell 脚本没有执行权限 报错 bash: ./myshell.sh: Permission denied
    linux 启动solr 报错 Your Max Processes Limit is currently 31202. It should be set to 65000 to avoid operational disruption.
    远程查询批量导入数据
    修改 MZTreeView 赋权节点父节点选中子节点自动选中的问题
    关于乱码的问题解决记录
    我的网站优化之路
    对设计及重构的一点反思
    我的五年岁月
    奔三的路上
  • 原文地址:https://www.cnblogs.com/mybkn/p/2484580.html
Copyright © 2011-2022 走看看