导航:首页 > 操作系统 > android获取packagename

android获取packagename

发布时间:2024-12-16 15:52:11

android Package name 是什么,有什么用

1、package name是指一个应用的包名,是Android系统中为每一个应用程序分配的一个标识,每个应用的标识都必须是不同的
2、作用:把每个应用区别开,通过package name可以打开app

② android5.0之后,如何获取当前顶端包名

//获取到栈顶应用程序的包名
public String getTopActivty() {

String topPackageName="888";

//android5.0以上获取方式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();

List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);

if (stats != null) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : stats) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
Log.e("TopPackage Name", topPackageName);
}
}

}
//android5.0以下获取方式
else{

List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(1);

ActivityManager.RunningTaskInfo taskInfo = tasks.get(0);

topPackageName = taskInfo.topActivity.getPackageName();

}

return topPackageName;

}

③ 我想问一下,android开发时要引用第三方应用,我要怎么知道程序的入口包名和主Activity呢,比较急呢

先通过下面的getPackages()方法获得所有系统安装的应用,根据打印出来的日志找到你要找的应用的对应的包名,在调用startAppByPackageName()方法启动应用就可以了,主activity不需要的

private ArrayList<PInfo> getPackages() {

ArrayList<PInfo> apps = getInstalledApps();

final int max = apps.size();

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

apps.get(i).prettyPrint();

}

return apps;

}

class PInfo {

private String appname = "";

private String pname = "";

private String versionName = "";

private int versionCode = 0;

private Drawable icon;

private void prettyPrint() {

Log.e("zhm",appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);

}

}

private ArrayList<PInfo> getInstalledApps() {

ArrayList<PInfo> res = new ArrayList<PInfo>();

List<PackageInfo> packs = parent.getPackageManager().getInstalledPackages(0);

for(int i=0;i<packs.size();i++) {

PackageInfo p = packs.get(i);

if (p.versionName == null) {

continue ;

}

PInfo newInfo = new PInfo();

newInfo.appname = p.applicationInfo.loadLabel(parent.getPackageManager()).toString();

newInfo.pname = p.packageName;

newInfo.versionName = p.versionName;

newInfo.versionCode = p.versionCode;

newInfo.icon = p.applicationInfo.loadIcon(parent.getPackageManager());

res.add(newInfo);

}

return res;

}

public void startAppByPackageName(String packageName){

PackageInfo pi = null;

try {

pi = getPackageManager().getPackageInfo(packageName, 0);

} catch (NameNotFoundException e) {

e.printStackTrace();

}

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);

resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);

resolveIntent.setPackage(pi.packageName);

List<ResolveInfo> apps = getPackageManager().queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();

if (ri != null ) {

String packageName1 = ri.activityInfo.packageName;

String className = ri.activityInfo.name;

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

ComponentName cn = new ComponentName(packageName1, className);

intent.setComponent(cn);

startActivity(intent);

}

}

④ 如何简单快速获取Android应用包名

一、
先说明一下这里讲的方法是通用的,而网上其他方法获取PackageName不通用(因为他是建立在root的基础上的,我不敢保证你的设备已经root)。
①在android设备上点击一下你要测试的应用,然后就不用操作设备了。
②在PC上的命令行输入:adb logcat>D:/log.txt *:I
在这里的D:/log.txt你可以改成其他的路径,但是一定要先确保路径下没有这个文件,不然的话你以前的文件就被改掉了,一定要小心。
③按下Ctrl+c先停掉(为了避免过多的新信息)。打开刚刚的那个文件D:/log.txt。从文件最下面开始找下面格式的信息
I/ActivityManager( 数字): Displayed 包名/类名: +数字ms
例如我的信息如下:
I/ActivityManager( 272): Displayed com.vane/.act.ActLauncher: +315ms
不过你可能会发现有很多这种格式的信息,到底哪个才是你需要的呢,如果你严格按照刚刚的步骤做的话,那么很可能是最下面那条信息,即使不是那么也肯定是最下面几条信息中的某一条,这需要你根据应用进行辨别。

二、使用aapt工具
cmd中进入到aapt所在目录,输入
aapt mp badging 包绝对路径
就可以看到包名和权限等信息了

⑤ Android 怎么样获得应用信息

程序大概分成三个部分:
1.获取手机已安装的所有应用package的信息(其中包括用户自己安装的,还有系统自带的);
2.滤除系统自带应用;
3.通过列表显示出应用程序的图标(icon),和其他文字信息(应用名称,包名称package name,版本号等等)
首先,我们定义一个数据结构,来保存应用程序信息(icon,name,packageName,versionName,versionCode,等)

下面我们就来看看代码吧,这样我们大家看的风直观一些:

java代码:
public class AppInfo {
public String appName="";
public String packageName="";
public String versionName="";
public int versionCode=0;
public Drawable appIcon=null;
public void print(){
Log.v("app","Name:"+appName+" Package:"+packageName);
Log.v("app","Name:"+appName+" versionName:"+versionName);
Log.v("app","Name:"+appName+" versionCode:"+versionCode);
}
}

然后我们通过PackageManager 来获取已安装的应用包信息。

java代码:
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
appList.add(tmpInfo);
}//好啦 这下手机上安装的应用数据都存在appList里了。

那么如何判断一个应用是否为系统应用呢?

java代码:
if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){
//非系统应用
}else{
//系统应用
}

所以如果只需要获取到非系统应用信息,代码如下:

java代码:
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packages.size();i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
if((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0){
appList.add(tmpInfo);//如果非系统应用,则添加至appList
}
}

阅读全文

与android获取packagename相关的资料

热点内容
32位cpu编译 浏览:802
奥特佳涡旋压缩机维修 浏览:672
面向过程函数编程 浏览:640
海通证券app新手怎么操作 浏览:343
历代大师pdf 浏览:394
争遗产算法律纠纷吗 浏览:378
不听命令擅自夜间突围 浏览:710
命令不敢违 浏览:838
java命令行启动jar 浏览:284
服务器不做raid怎么识别硬盘 浏览:965
lol下载的压缩包 浏览:915
androidlocker 浏览:71
大三不学编程可以干嘛 浏览:318
幸福文件夹2在线观看 浏览:477
android正方形绘制 浏览:204
施耐德plc编程手册下载 浏览:149
jsp源码预约系统下载 浏览:792
硬盘加密安全模式打不开 浏览:949
采集辽宁app怎么下载 浏览:843
怎么改服务器dns地址 浏览:550