Android 获取应用包名

article/2025/10/3 20:02:29

Android 获取应用包名

得知华为把荣耀手机卖了, 看着我手中的荣耀30,突然想到会不会给我的手机推送一些奇奇怪怪的东西, 为了保险起见,决定把系统更新禁用了

然鹅,我竟然在华为的系统里看不到应用包名, 苦寻无果后,决定写一个查看包名的工具

经历了两个小时的面向搜索引擎编程 。。。。。。

最终效果图

下面贴上相关代码

AppManageList
/*** 应用名称,包名图标展示*/
public class AppManageList extends BaseActivity {private ListView listView;private List<AppManageListBean> list;private AppManageListAdapter adapter;private ClipboardManager cm;private ClipData mClipData;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.act_app_manage_list);}@Overridepublic String getTitleText() {return "应用信息列表";}@Overridepublic void initView() {listView = findViewById(R.id.act_app_manage_list_lv);}@Overridepublic void initEvent() {}@Overridepublic void initData() {list = new ArrayList<>();adapter = new AppManageListAdapter(this, list);listView.setAdapter(adapter);//长按条目复制包名listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//获取剪贴板管理器:cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);// 创建普通字符型ClipDatamClipData = ClipData.newPlainText("packageName", list.get(position).getPackageName());// 将ClipData内容放到系统剪贴板里。cm.setPrimaryClip(mClipData);showToast("包名复制成功");}});//测试
//        for (int i = 0; i < 5; i++) {
//            list.add(new AppManageListBean("app的mignzi", "akdsfjlaklsdjflkasdf", "110MB", "11.10"));
//        }
//        adapter.notifyDataSetChanged();}@Overrideprotected void onResume() {showProgress("正在加载应用信息");new Thread(new Runnable() {@RequiresApi(api = Build.VERSION_CODES.O)@Overridepublic void run() {getItems(AppManageList.this, new CallBackListener<List<AppManageListBean>>() {@Overridepublic void onSuccess(List<AppManageListBean> itemList) {list.clear();list.addAll(itemList);runOnUiThread(new Runnable() {@Overridepublic void run() {hideProgress();adapter.notifyDataSetChanged();}});}@Overridepublic void onError(String error) {runOnUiThread(new Runnable() {@Overridepublic void run() {hideProgress();}});}});}}).start();super.onResume();}@RequiresApi(api = Build.VERSION_CODES.O)public void getItems(Context context, CallBackListener<List<AppManageListBean>> listener) {PackageManager pckMan = context.getPackageManager();ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>();List<AppManageListBean> itemAppManage = new ArrayList<>();List<PackageInfo> packageInfo = pckMan.getInstalledPackages(PackageManager.GET_ACTIVITIES);for (PackageInfo appInfo : packageInfo) {StorageStats packageStats = null;if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {packageStats = AppSizeUtil.getPackageStats(this, appInfo.packageName);}itemAppManage.add(new AppManageListBean(appInfo.applicationInfo.loadIcon(pckMan), appInfo.applicationInfo.loadLabel(pckMan).toString(), appInfo.packageName, packageStats == null ? "" : String.valueOf(packageStats.getAppBytes()), appInfo.versionName));}listener.onSuccess(itemAppManage);
//        return items;}}
act_app_manage_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".view.work.AppManageList"><include layout="@layout/include_common_title" /><ListViewandroid:id="@+id/act_app_manage_list_lv"android:layout_width="match_parent"android:paddingLeft="6dp"android:paddingRight="6dp"android:layout_height="wrap_content" /></LinearLayout>
AppManageListAdapter
/*** 应用管理列表适配器* @author  zhou*/
public class AppManageListAdapter extends BaseAdapter {private Context context;private List<AppManageListBean> list;public AppManageListAdapter(Context context, List<AppManageListBean> list) {this.context = context;this.list = list;}@Overridepublic int getCount() {if (list != null) {return list.size();}return 0;}@Overridepublic Object getItem(int position) {if (list != null) {return list.get(position);}return null;}@Overridepublic long getItemId(int position) {if (list != null) {return position;}return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;if (convertView == null) {viewHolder = new ViewHolder();convertView = View.inflate(context, R.layout.list_item_app_manage, null);viewHolder.list_item_app_manage_app_name_tv = convertView.findViewById(R.id.list_item_app_manage_app_name_tv);viewHolder.list_item_app_manage_app_package_name_tv = convertView.findViewById(R.id.list_item_app_manage_app_package_name_tv);viewHolder.list_item_app_manage_app_version_code_tv = convertView.findViewById(R.id.list_item_app_manage_app_version_code_tv);viewHolder.list_item_app_manage_app_size_tv = convertView.findViewById(R.id.list_item_app_manage_app_size_tv);viewHolder.list_item_app_manage_icon_iv = convertView.findViewById(R.id.list_item_app_manage_icon_iv);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.list_item_app_manage_app_name_tv.setText(list.get(position).getAppName());viewHolder.list_item_app_manage_app_version_code_tv.setText("版本号:"+list.get(position).getVersionCode());
//        viewHolder.list_item_app_manage_app_size_tv.setText("大小:"+list.get(position).getPackageSize());viewHolder.list_item_app_manage_app_size_tv.setVisibility(View.GONE);viewHolder.list_item_app_manage_app_package_name_tv.setText("包名:"+list.get(position).getPackageName());viewHolder.list_item_app_manage_icon_iv.setImageDrawable(list.get(position).getIconIv());return convertView;}public class ViewHolder{TextView list_item_app_manage_app_version_code_tv;TextView list_item_app_manage_app_size_tv;TextView list_item_app_manage_app_package_name_tv;TextView list_item_app_manage_app_name_tv;ImageView list_item_app_manage_icon_iv;}}
list_item_app_manage.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><!--    根目录容器--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="6dp"android:orientation="horizontal"><!--        左侧应用图标--><ImageViewandroid:id="@+id/list_item_app_manage_icon_iv"android:layout_width="60dp"android:layout_height="60dp"android:layout_marginLeft="10dp"android:layout_marginTop="8dp"android:layout_marginRight="8dp"android:layout_marginBottom="8dp"/><!--        右侧应用信息容器--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="70dp"android:layout_marginTop="3dp"android:layout_marginRight="10dp"android:layout_marginBottom="3dp"android:orientation="vertical"><!--            第一行应用名称--><TextViewandroid:id="@+id/list_item_app_manage_app_name_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="4dp"android:singleLine="true"android:textSize="18sp" /><!--            第二行应用包名--><TextViewandroid:id="@+id/list_item_app_manage_app_package_name_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="4dp"android:singleLine="true"android:textSize="14sp" /><!--            第三行应用大小和应用版本号--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal">
<!--                应用大小--><TextViewandroid:id="@+id/list_item_app_manage_app_size_tv"android:layout_width="wrap_content"android:layout_marginRight="10dp"android:textSize="14sp"android:layout_height="wrap_content"></TextView>
<!--                应用版本号--><TextViewandroid:id="@+id/list_item_app_manage_app_version_code_tv"android:layout_width="wrap_content"android:textSize="14sp"android:layout_height="wrap_content"></TextView></LinearLayout></LinearLayout></LinearLayout></LinearLayout>

CallBackListener

public interface CallBackListener<T> {void onSuccess(T t);void onError(String error);
}

 


http://chatgpt.dhexx.cn/article/uYmXMKOD.shtml

相关文章

如何查看IOS系统APP的包名

一.使用mac系统查看方法 使用mac系统&#xff0c;commond空格搜索 输入console进入控制台 选中连接的设备&#xff0c;启动app&#xff0c;日志刷新&#xff0c;右上方过滤搜索&#xff1a;submitting 就能看到当前应用的包名了&#xff0c;一般包名中有itunes.xxx 二.使用…

uniapp包名查看方法

uniapp小米应用分发平台上线应用过程梳理 一、账号申请审核 二、创建应用&#xff08;提交的包名与manifest.json中Dcloud AppleID相似但是不是&#xff09; 小米异常信息截图 三、安卓包名&#xff1a;参考安卓手机查看包名 ps:不要使用链接中的命令 直接使用adb shell dum…

IntelliJ IDEA 如何快速的修改包名

没错。我就是这么无聊。&#xff08;请不要吐槽我的习惯&#xff0c;只是因为看到顺序很奇怪就想排个序&#xff09; 本人有轻微的强迫症&#xff0c;拿到一个项目src目录和resources、WebRoot目录在同级。然后顺序乱七八糟&#xff0c;我有点受不了。我就按照以前的习惯。顺手…

Java-包名规范

Java项目包分类

安卓快速修改包名 -.- 备忘

文章目录 前言一、需要修改的点二、修改 applicationId三、修改 AndroidManifest 中的 package 包名四、修改项目目录结构 包名五、批量更改 import &#xff08;全局替换文本&#xff09;六、修改其他一些使用了 applicationId 的地方及获得应用ID 前言 改包名自然不是第一次…

IDEA如何修改包名

有很多小伙伴从网上找了项目源码后&#xff0c;发现项目的包名不符合自己的要求&#xff0c;想要修改一下包名&#xff0c;把他变成自己的。所以这里给大家讲解一下&#xff0c;如何修改项目的包名。 1.打开项目&#xff0c;我们可以看到原项目的包名是用自己的名字命名的&…

as修改包名

之前修改包名的时候&#xff0c;顺序总是不对&#xff0c;修改包名之后&#xff0c;各个类中引用地址都需要改变&#xff0c;很麻烦。特意拿出一些时间&#xff0c;整理一下这边&#xff0c;记录一下。 1.首先 &#xff0c;修改包名 &#xff0c;可以先根据自己的需要更改包名的…

如何知道一个App的包名

包名&#xff08;Package name&#xff09;在Android系统中是判断一个App的唯一标识&#xff0c;不同的App可以有同样的名字&#xff0c;但是它的包名不可以相同 例如我可以自己编译生成一个App也叫“微信”&#xff0c;但是我App的包名不能为com.tencent.mm&#xff08;微信的…

获取应用包名

一、获取应用包名的方法 1、根据应用的apk文件来获取 &#xff08;1&#xff09;打开cmd窗口&#xff0c;cd命令切换到Andorid SDK下的aapt所在目录&#xff08;一般在build-tools目录下&#xff09;注&#xff1a;切换到不同磁盘的目录&#xff0c;需要先切换到对应的磁盘&am…

android 包名工具,查看包名(安卓应用包名查看工具)

查看包名app功能最为全面的安卓应用安装包信息查看器,不仅是包名,各种md5信息,图标内容,版本号等等都能显示,并且不用安装就能插件安装包内的各种内容,十分方便,喜欢的朋友们赶快下载查看包名app开始体验吧&#xff01; 查看包名软件介绍 查看应用包名app是一款可以快速查看手机…

Java之包名

1. 包名代表一层一层的文件夹&#xff0c;即会自动生成相应的文件目录&#xff0c;如包名pers.chen.hello_java&#xff1a; 表示&#xff1a; 2. 包名的命名规则 &#xff08;1&#xff09;格式&#xff1a;版权所有.版权所有者名.项目名.模块名 &#xff08;2&#xff09;全…

包( package )的命名规则、常用包名、更改包的显示方式

包: 相当于windows中的文件夹 *作用: 1. 分类整理和保存代码, 方便管理和使用 2. 不同包中可以存在同名的类 *命名要求: 1. 通常只使用小写字母 2. 通常每个包的名字只使用1个单词 3. 域名倒置 通常使用组织的网络域…

包的命名及作用

一、包命名规则&#xff1a; 1、 包名 全部由小写字母 &#xff08;多个单词也全部小写&#xff09; &#xff1b; ( 这是约定俗成的规范 ) 2、 如果包名包含多个层次&#xff0c; 每个层次应该用“ .” 分割&#xff1b; 3、 包名一般由倒置的域名开头&#xff0c;比如 com.ba…

Java基础第六课(关于包名的讲解)

好啦&#xff0c;开始。。。 写了好几次代码 不知道你们注意到没 每次我创建Class的时候 上面都有个package没填写 如下图&#xff1a; 其实这个就是包名 1.什么叫包&#xff1f; 为了更好地组织类&#xff0c;Java提供了包机制。包是类的容器&#xff0c;用于分隔类名空间。如…

Java 遍历JsonNode

如图&#xff0c;有一个jsonNode对象&#xff0c;我想获得路径"data" -> "items"数组下的每个元素的某个值&#xff0c;比如id&#xff0c;那么我得遍历这个数组Node对象。 使用elements()方法即可&#xff0c;直接上代码&#xff1a; // 遍历jsonNode&…

json对象的遍历(C++)

在使用C的项目中&#xff0c;对json进行解析时&#xff0c;如果对象列表过长&#xff0c;通常就需要对对象进行遍历&#xff0c;来实现解析。 我参看了博客&#xff0c;如下&#xff1a; https://blog.csdn.net/hellokandy/article/details/51607311 使用iterater对json对象…

JSON、遍历获取json对象的值

一、JSON基本入门 二、定义JSON对象 建一个html: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script>//1.定义基本格式var person {"name": "张三&…

Java遍历Json简单实例

这篇文章记录我在工作中遇到的问题以及我的解决方案&#xff0c;问题是&#xff1a;如何前端给后端的返回值中取出body内的每一条目中的key和value&#xff1f;遇到这个问题我还是毫无头绪的&#xff0c;虽然听说过一些非常好用的JSON工具&#xff0c;但是还是有点无从下手。 无…

js递归遍历json对象,js循环遍历json数组

JS怎么遍历json数组 。 用 for in 循环遍历var str [{"name":"宗2瓜","num":"1","price":"122"},{"name":"宗呱呱","num":"1","price":"100"}];…

json遍历

遍历json对象&#xff1a; 无规律&#xff1a;<script> var json [{dd:SB,AA:东东,re1:123},{cccc:dd,lk:1qw}]; for(var i0,ljson.length;i<l;i){ for(var key in json[i]){ alert(key:json[i][key]); } } </script> ? 有规律&#xff1a; packJson [{&qu…