zoukankan      html  css  js  c++  java
  • 另一种跳转actvity方式

    MainActivity
    package com.ct.get;
    
    import java.text.Collator;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.ListActivity;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.content.pm.ResolveInfo;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends ListActivity {
        /** Called when the activity is first created. */
        private List<Map> maps;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            Intent intent = getIntent();
            String path = intent.getStringExtra("com.example.android.apis.Path");
            if (path == null) {
                path = "";
            }
            maps = getData(path);
            
            setListAdapter(new SimpleAdapter(this, getData(path),
                    android.R.layout.simple_list_item_1, new String[] { "title" },
                    new int[] { android.R.id.text1 }));
        }
        
        protected List getData(String prefix) {
            List<Map> myData = new ArrayList<Map>();
    
            Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
            mainIntent.addCategory("ct.test.WHEEL_SAMPLE");
    
            PackageManager pm = getPackageManager();
            List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
    
            if (null == list)
                return myData;
            String[] prefixPath;
            
            if (prefix.equals("")) {
                prefixPath = null;
            } else {
                prefixPath = prefix.split("/");
            }        
            int len = list.size();        
            Map<String, Boolean> entries = new HashMap<String, Boolean>();
            for (int i = 0; i < len; i++) {
                ResolveInfo info = list.get(i);
                CharSequence labelSeq = info.loadLabel(pm);
                String label = labelSeq != null
                        ? labelSeq.toString()
                        : info.activityInfo.name;     
               //取manifest里面的label的值
                if (prefix.length() == 0 || label.startsWith(prefix)) {                
                    String[] labelPath = label.split("/");
                    String nextLabel = prefixPath == null ? labelPath[0] : labelPath[prefixPath.length];
                    System.out.println("ct tets------------>label  "+label);
                    if ((prefixPath != null ? prefixPath.length : 0) == labelPath.length - 1) {
                        addItem(myData, nextLabel, activityIntent(
                                info.activityInfo.applicationInfo.packageName,
                                info.activityInfo.name));
                    } else {
                        if (entries.get(nextLabel) == null) {
                            addItem(myData, nextLabel, browseIntent(prefix.equals("") ? nextLabel : prefix + "/" + nextLabel));
                            entries.put(nextLabel, true);
                        }
                    }
                }
            }
    
            Collections.sort(myData, sDisplayNameComparator);
            
            return myData;
        }
        
        
        private final static Comparator<Map> sDisplayNameComparator = new Comparator<Map>(){
             private final Collator collator = Collator.getInstance();
    
             public int compare(Map map1, Map map2) {
                 return collator.compare(map1.get("title"), map2.get("title"));
             }
        };
        
        protected Intent activityIntent(String pkg, String componentName) {
            Intent result = new Intent();
            result.setClassName(pkg, componentName);
            return result;
        }
        
        protected Intent browseIntent(String path) {
            Intent result = new Intent();
            result.setClass(this, MainActivity.class);
            result.putExtra("com.example.android.apis.Path", path);
            return result;
        }
    
        protected void addItem(List<Map> data, String name, Intent intent) {
            Map<String, Object> temp = new HashMap<String, Object>();
            temp.put("title", name);
            temp.put("intent", intent);
            data.add(temp);
        }
    
        @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {
            Map map = (Map) l.getItemAtPosition(position);
    
            Intent intent = (Intent) map.get("intent");
            startActivity(intent);
        }
    }

    在manifest里的声明

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.ct.get"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk android:minSdkVersion="8" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:label="@string/app_name"
                android:name=".MainActivity" >
                <intent-filter >
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:label="AActivity"
                android:name=".AActivity" >
                <intent-filter >
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="ct.test.WHEEL_SAMPLE" />
                </intent-filter>
            </activity>
            
                <activity
                android:label="BActivity"
                android:name=".BActivity" >
                <intent-filter >
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="ct.test.WHEEL_SAMPLE" />
                </intent-filter>
            </activity>
            
                     <activity
                android:label="CActivity"
                android:name=".CActivity" >
                <intent-filter >
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="ct.test.WHEEL_SAMPLE" />
                </intent-filter>
            </activity>
                    
                    
        </application>
    
    </manifest>

    (在F:\java\TestGetMani)

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/ct732003684/p/2882605.html
Copyright © 2011-2022 走看看