
这个很简单,你需要使用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 修改应用程序名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)