需要在java环境下取得apk应用程序名

需要在java环境下取得apk应用程序名,第1张

这个很简单,你需要使用PackageManager,你查看这个类,就知道怎么获取Android手机里所有的应用程序的应用名称了,我的程序在linux里,若你查找了 还没搞定我可以给你一段代码

// 获取packageManager对象

PackageManager packageManager = thisgetPackageManager();

/getInstalledApplications 返回当前设备上安装的应用包集合

ApplicationInfo对应着androidManifestxml中的application标签。通过它可以获取该application对应的信息

/

List<ApplicationInfo> applicationInfos = packageManagergetInstalledApplications(0);

以上是主要代码

applicationInfos里的是ApplicationInfo类,ApplicationInfo applicationInfo = applicationInfosget(i);

String packageName = applicationInfopackageName;// 包名

String packageLabel = packageManagergetApplicationLabel(applicationInfo)toString();

packageLabel 这个就是应用程序名称

1获取系统的可用内存和总内存。

获取系统内存中应用的信息,需要用到ActivityManager这个类,然而当你用这个类拿数据的时候你会发现,拿到的数据不正确。用这个类的API获取系统的总内存和可用内存会出现数据不正确的情况。除了这个类,Android手机中有文件描述了这些信息——/proc/meminfo。meminfo文件中详细的记录了安卓手机的一些数据,包括可用内存和总内存。附上代码:

public static long getTotalMemSize() {

long size=0;

File file = new File("/proc/meminfo");

try {

BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

String memInfo = bufferreadLine();

int startIndex = memInfoindexOf(":");

int endIndex = memInfoindexOf("k");

memInfo = memInfosubstring(startIndex + 1, endIndex)trim();

size = LongparseLong(memInfo);

size = 1024;

bufferclose();

} catch (javaioIOException e) {

eprintStackTrace();

}

return size;

}

public static long getAviableMemSize() {

long size=0;

File file = new File("/proc/meminfo");

try {

BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

String memInfos=new String();

int i=0;

while ((memInfos=bufferreadLine())!=null){

i++;

if (i==2){

memInfo = memInfos;

}

}

int startIndex = memInfoindexOf(":");

int endIndex = memInfoindexOf("k");

memInfo = memInfosubstring(startIndex + 1, endIndex)trim();

size = LongparseLong(memInfo);

size = 1024;

bufferclose();

} catch (javaioIOException e) {

eprintStackTrace();

}

return size;

}

*** 作很简单分别是读取第一行的数据和第二行的数据,将字符串分去出,将所得值乘以1024变为byte类型。

2获取内存中运行应用的信息

首先,自然要有一个Bean文件用于存储这些信息,之后通过ActivityManager的getRunningAppProcesses()方法得到一个RunningAppProcessInfo的List。便利这个List去除我们想要的数据,存在我们的Bean文件夹中。

public static List<TaskBean> getAllTask() {

List<TaskBean>taskList=new ArrayList<>();

List<ActivityManagerRunningAppProcessInfo>runList=UIUtilsgetActManager()getRunningAppProcesses();

try {

for (ActivityManagerRunningAppProcessInfo r:runList) {

TaskBean taskBean = new TaskBean();

String processName = rprocessName;

taskBeansetPackageName(processName);

PackageInfo packageInfo = UIUtilsgetPacManager()getPackageInfo(processName, 0);

taskBeansetIcon(packageInfoapplicationInfoloadIcon(UIUtilsgetPacManager()));

taskBeansetName(packageInfoapplicationInfoloadLabel(UIUtilsgetPacManager())toString());

DebugMemoryInfo[] processInfo=UIUtilsgetActManager()getProcessMemoryInfo(new int[]{rpid});

taskBeansetMemSize(processInfo[0]getTotalPrivateDirty()1024);

if ((packageInfoapplicationInfoflags&ApplicationInfoFLAG_SYSTEM)!=0){

taskBeansetSystem(true);

}else {

taskBeansetUser(true);

}

if (taskList != null) {

taskListadd(taskBean);

for (int i=0;i<taskListsize();i++) {

if (taskListget(i)getPackageName()equals(ConstantsPACKAGE_INFO)){

taskListremove(i);

}

}

}

}

} catch (PackageManagerNameNotFoundException e) {

eprintStackTrace();

}

return taskList;

}

好了,大功告成。当你开开心心的拿到手机上调试的时候你会发现,一个数据都没有。原来,在Android50之后,谷歌处于完全考虑已经弃用了通过如上方法拿到进程中的信息。那么又应该怎么做呢?

public static List<TaskBean> getTaskInfos() {

List<AndroidAppProcess> processInfos = ProcessManagergetRunningAppProcesses();

List<TaskBean> taskinfos = new ArrayList<TaskBean>();

// 遍历运行的程序,并且获取其中的信息

for (AndroidAppProcess processInfo : processInfos) {

TaskBean taskinfo = new TaskBean();

// 应用程序的包名

String packname = processInfoname;

taskinfosetPackageName(packname);

// 湖区应用程序的内存 信息

androidosDebugMemoryInfo[] memoryInfos = UIUtilsgetActManager()

getProcessMemoryInfo(new int[] { processInfopid });

long memsize = memoryInfos[0]getTotalPrivateDirty() 1024L;

taskinfosetMemSize(memsize);

taskinfosetPackageName(processInfogetPackageName());

try {

// 获取应用程序信息

ApplicationInfo applicationInfo = UIUtilsgetPacManager()getApplicationInfo(

packname, 0);

Drawable icon = applicationInfoloadIcon(UIUtilsgetPacManager());

taskinfosetIcon(icon);

String name = applicationInfoloadLabel(UIUtilsgetPacManager())toString();

taskinfosetName(name);

if ((applicationInfoflags & ApplicationInfoFLAG_SYSTEM) == 0) {

// 用户进程

taskinfosetUser(true);

} else {

// 系统进程

taskinfosetSystem(true);

}

} catch (PackageManagerNameNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

// 系统内核进程 没有名称

taskinfosetName(packname);

Drawable icon = UIUtilsgetContext()getResources()getDrawable(

Rdrawableic_launcher);

taskinfosetIcon(icon);

}

if (taskinfo != null) {

taskinfosadd(taskinfo);

for (int i=0;i<taskinfossize();i++) {

if (taskinfosget(i)getPackageName()equals(ConstantsPACKAGE_INFO)){

taskinfosremove(i);

}

}

}

}

return taskinfos;

}

好了,接下来只需要判断安装的版本就可以了:

int sysVersion = IntegerparseInt(BuildVERSIONSDK);

taskList = sysVersion > 21 TaskManagerEnginegetTaskInfos() : TaskManagerEnginegetAllTask();

好了,大功告成。数据就能正常拿到了。

1、首先确保已经建立了模拟器

2、首先修改activity_mainxml,把内容写在android:text=""中,我要修改的是图书管理系统,可以通过更改android:textSize="20px"  的数值,更改“图书管理系统”字体的大小。

3、下面要生成APP的名字 之前默认的就是工程名Chapter6,现在要修改成BookSystem,在stringxml中修改代码。

通过修改stringsxml中的代码<string name="app_name">BookSystem</string> ,最后出现了希望出现的结果。

注意事项

修改代码时要严谨,仔细检查自己的代码,以防出错,

修改完之后记得要project-clean和每次运行时要按 run as-android application的步骤来进行。

首先你要获得root权限,然后连接电脑,确定驱动已经装好,然后。

在命令行里输入 adb shell 回车,你会看到$,然后输入SU,再回车,出现#

然后输入以下命令,最后的文件名是要删除的程序名称,请根据自己需要确定是否要删除该程序

/system/bin/rm /system/app/comhtcTwitterWidget

/system/bin/rm /system/app/HtcTwitter

/system/bin/rm /system/app/HtcFootprintsWidget

/system/bin/rm /system/app/HtcFootprints

/system/bin/rm /system/app/Stock

/system/bin/rm /system/app/comhtcStockWidget

/system/bin/rm /system/app/VVM

/system/bin/rm /system/app/Quickoffice

/system/bin/rm /system/app/PDFViewer

/system/bin/rm /system/app/Calculator

/system/bin/rm /system/app/Mail

/system/bin/rm /system/app/htcmailwidgets

/system/bin/rm /system/app/htcmsgwidgets

/system/bin/rm /system/app/HtcRingtoneTrimmer

/system/bin/rm /system/app/Flickr

/system/bin/rm /system/app/CityID

/system/bin/rm /system/app/FriendStream

/system/bin/rm /system/app/comhtcFriendStreamWidget

private ArrayList<String> getFileNameList(File path){

ArrayList<String> FileNameList=new ArrayList<String>();

//如果是文件夹的话

if(pathisDirectory()){

//什么也不做

}

//如果是文件的话直接加入

else{

Logi(TAG, pathgetAbsolutePath());

//进行文件的处理

String filePath = pathgetAbsolutePath();

//文件名

String fileName = filePathsubstring(filePathlastIndexOf("/")+1);

//添加

FileNameListadd(fileName);

}

}

}

需要的话直接调用getFileNameList("/sdcard/");就能得到文件名的list了

以上就是关于需要在java环境下取得apk应用程序名全部的内容,包括:需要在java环境下取得apk应用程序名、如何获取android 进程信息、android 修改应用程序名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10176589.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存