http://dev.10086.cn/cmdn/wiki/index.php?doc-view-5089.html貌似可以用我正在研究的  uri的这个东西来解决吧我也是很糊涂啊   但是没有人能够说明 悲剧ing

解决方案 »

  1.   

    好像不行,除非你知道AlarmClock的packagename+classname,所以这只能在framework层处理。
      

  2.   

    package com.android.alarmclock;public class AlarmClock extends Activity implements OnItemClickListener {
      

  3.   

    我的意思是咱们在应用层无法import这个类
      

  4.   

    // 定义 PackageManager 实例
        private PackageManager m_packageMgr;
        // 定义 ResolveInfo 的数组
        private List<ResolveInfo> m_infos;    // 在onCreate()函数中取得所有安装的App
        // 注意是类型为Intent.ACTION_MAIN + Intent.CATEGORY_LAUNCHER 的App 
        // 这至少能包含你所说的“源码”中能看到的App,你也可以自己过滤掉你不想要的App
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            m_packageMgr = getPackageManager();        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
            mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);        m_infos = m_packageMgr.queryIntentActivities(mainIntent, 0);
            Collections.sort(m_infos, new ResolveInfo.DisplayNameComparator(m_packageMgr));
        }
        
        // 当你点击MenuItem的时候就掉用这个函数吧
        protected static void startApp(Context context, ResolveInfo info)
        {
            String packageName = info.activityInfo.applicationInfo.packageName;
            String className = info.activityInfo.name;
            Log.d("startApp", "packageName = " + packageName + "\tclassName = " + className);
            
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            intent.setComponent(new ComponentName(packageName, className));
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            context.startActivity(intent);
        }
      

  5.   


    // 定义 PackageManager 实例
        private PackageManager m_packageMgr;
        // 定义 ResolveInfo 的数组
        private List<ResolveInfo> m_infos;    // 在onCreate()函数中取得所有安装的App
        // 注意是类型为Intent.ACTION_MAIN + Intent.CATEGORY_LAUNCHER 的App 
        // 这至少能包含你所说的“源码”中能看到的App,你也可以自己过滤掉你不想要的App
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            m_packageMgr = getPackageManager();        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
            mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);        m_infos = m_packageMgr.queryIntentActivities(mainIntent, 0);
            Collections.sort(m_infos, new ResolveInfo.DisplayNameComparator(m_packageMgr));
        }
        
        // 当你点击MenuItem的时候就掉用这个函数吧
        protected static void startApp(Context context, ResolveInfo info)
        {
            String packageName = info.activityInfo.applicationInfo.packageName;
            String className = info.activityInfo.name;
            Log.d("startApp", "packageName = " + packageName + "\tclassName = " + className);
            
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            intent.setComponent(new ComponentName(packageName, className));
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            context.startActivity(intent);
        }
      

  6.   

    通过packageManager去搜一下package,然后过滤一下就行了。如果怕程序过滤太死板了,可以写设置接口,按设置的过滤就可以了。参考launcher 相关代码