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)

  • 相关阅读:
    c#的Marshal
    爬虫之requests详解
    爬取抖音视频
    爬取拉钩网
    爬虫自动登陆GitHub
    爬取博客园博客
    爬取煎蛋网文章
    爬取抽屉热搜榜文章
    准备
    爬虫示例
  • 原文地址:https://www.cnblogs.com/ct732003684/p/2882605.html
Copyright © 2011-2022 走看看