在项目里有一个需求,点击App介绍里面的官方微信公众号,就可以直接打开微信搜索、关注。这个功能实现起来并不复杂,获取包名,用intent跳转即可。那么如何获取某一个应用的包名呢?可以反编译apk,在文件里查看,这个方法比较麻烦。我们也可以直接通过Android系统为我们提供的类PackageManager来获得PackageInfo,这个类里面包含相关应用程序的很多信息。示例用到了SwipeMenuListView,菜单里提供打开App与卸载App两个功能。主要示例代码如下:
package com.li.applistdemo;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.ResolveInfo;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.baoyz.swipemenulistview.BaseSwipListAdapter;
import com.baoyz.swipemenulistview.SwipeMenu;
import com.baoyz.swipemenulistview.SwipeMenuCreator;
import com.baoyz.swipemenulistview.SwipeMenuItem;
import com.baoyz.swipemenulistview.SwipeMenuListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
public final int GET_ALL_APP = 0; // 所有应用程序
public final int GET_SYSTEM_APP = 1; // 系统程序
public final int GET_THIRD_APP = 2; // 第三方应用程序
public final int GET_SDCARD_APP = 3; // 安装在SDCard的应用程序
private List<PackageInfo> mAppList;
private AppListAdapter mAdapter;
private SwipeMenuL