zoukankan      html  css  js  c++  java
  • 如何在Android中的Activity启动第三方应用程序?

    如何在点击某个按键后,执行启动第三方应用程序界面?

    /**
         * <功能描述> 启动应用程序
         * 
         * @return void [返回类型说明]
         */
        private void startUpApplication(String pkg) {
            PackageManager packageManager = mContext.getPackageManager();
            PackageInfo packageInfo = null;
            try {
                // 获取指定包名的应用程序的PackageInfo实例
                  packageInfo = packageManager.getPackageInfo(pkg, 0);
            } catch (NameNotFoundException e) {
                // 未找到指定包名的应用程序
                  e.printStackTrace();
                // 提示没有GPS Test Plus应用
                  Toast.makeText(mSptActivity,
                        mSptActivity.getString(R.string.gps_no_test_plus),
                        Toast.LENGTH_SHORT).show();
                return;
            }
            if (packageInfo != null) {
                // 已安装应用
                  Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
                resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
                resolveIntent.setPackage(packageInfo.packageName);
                List<ResolveInfo> apps = packageManager.queryIntentActivities(
                        resolveIntent, 0);
                ResolveInfo ri = null;
                try {
                    ri = apps.iterator().next();
                } catch (Exception e) {
                    e.printStackTrace();
                    return;
                }
                if (ri != null) {
                    // 获取应用程序对应的启动Activity类名
                      String className = ri.activityInfo.name;
                    // 启动应用程序对应的Activity
                    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_LAUNCHER);
                    ComponentName componentName = new ComponentName(pkg, className);
                    intent.setComponent(componentName);
                    mContext.startActivity(intent);
                }
            }
        }

    想要打开指定包名的应用时,提供包名即可:

    // Gps Test Plus应用程序包名
    startUpApplication("com.chartcross.gpstestplus");

    上述的字符串:com.chartcross.gpstestplus即是Google提供的GPS Test Plus应用的包名。

    疑问:

    1. 现实情况是:可能在第一次刷机后,无法启动应用。如何解决此问题?

    2. 留给未来…

  • 相关阅读:
    模板模式
    简单实用的代理模式
    享元模式
    外观模式(人人都懂的设计模式)
    设计模式之组合模式,温故而知新。
    .net设计模式之装饰模式
    全选、反选
    There is a cycle in the hierarchy解决
    JSONObject、JSONArray
    JsonMessageView工具类
  • 原文地址:https://www.cnblogs.com/CVstyle/p/6345094.html
Copyright © 2011-2022 走看看