導航:首頁 > 操作系統 > 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