Skip to content

Latest commit

 

History

History
76 lines (66 loc) · 3.5 KB

程序的启动、卸载和分享.md

File metadata and controls

76 lines (66 loc) · 3.5 KB

程序的启动、卸载和分享

  1. 启动

     /**
     * 开启一个应用程序
     */
    private void startApk() {
        PackageManager pm = getPackageManager();
        try {
        // 原来的时候我们在得到PakageInfo的时候第二个参数都是设置为0.这个PackageInfo代表的就是某个程序的清单文件,
    	// 默认情况下在解析这个清单文件的时候得到的只是清单文件中的一些版本信息的等这些常用的内容,因为要获取更多的内容需要解析更多的内容,
    	// 就会消耗时间消耗资源,所以默认的时候都是只解析一些常用的,当我们要获取Activity等这些的时候就要给它一个标记,让它知道多解析这些你想要得到的内容,
    	// 如果我们想得到里面的activity或者service等这些啊就必须将第二个参数设置为相应的PackageManager.GET_ACTIVITYS等
            PackageInfo info = pm.getPackageInfo(selectedAppInfo.getPackname(),PackageManager.GET_ACTIVITIES);
            ActivityInfo[] activityInfos = info.activities;//获取清单中所有Activity信息的数据
            if (activityInfos != null && activityInfos.length > 0) {//由于一些服务或者接收者等没有Activity所以这里必须进行判断
                ActivityInfo activitInfo = activityInfos[0];//清单文件中配置的第一个Activity就是程序的启动Activity
                Intent intent = new Intent();
                intent.setClassName(selectedAppInfo.getPackname(),activitInfo.name);//这个activityInfo就是清单中activity节点的name,这样就能得到Activity的全类名
                startActivity(intent);
            } else {
                Toast.makeText(this, "无法启动应用程序", 0).show();
            }
        }
    }
  2. 卸载

    安卓系统提供了程序的卸载Activity,我们只要调用它的卸载就可以了,也是系统的PackageInstaller中的
    Intent intent = new Intent();
    intent.setAction("android.intent.action.VIEW");
    intent.setAction("android.intent.action.DELETE");
    intent.addCategory("android.intent.category.DEFAULT");
    intent.setData(Uri.parse("package:" + selectedAppInfo.getPackname()));//意图的数据必须是package://和包名
    startActivity(intent); 
  3. 分享

    就是启动出来信息的发送页面,将内容给填充进去所以这里要启动系统发送短信的Activity,要用到系统发送短信的Activity

    /**
     * 分享一个应用程序
     */
    private void shareApk() {
        Intent intent = new Intent();
        // <intent-filter>
        // <action android:name="android.intent.action.SEND" />
        // <category android:name="android.intent.category.DEFAULT" />
        // <data android:mimeType="text/plain" />
        // </intent-filter>
        intent.setAction(Intent.ACTION_SEND);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setType("text/plain");
        intent.putExtra(
                Intent.EXTRA_TEXT,
                "推荐你使用一款软件,名称为" + selectedAppInfo.getAppName()
                        + "下载地址:google play xxx,版本:"
                        + selectedAppInfo.getVersion());
        startActivity(intent);
    } 

    谷歌工程师在设计这个程序的时候,任何应用程序如果想使用分享的功能都可以通过实现它的Intent来实现,点击的时候可以选择不同的程序,同样也能分享到微博, 邮件等程序