Android編程實(shí)現(xiàn)應(yīng)用獲取包名、版本號、權(quán)限等信息的方法
本文實(shí)例講述了Android編程實(shí)現(xiàn)應(yīng)用獲取包名、版本號、權(quán)限等信息的方法。分享給大家供大家參考,具體如下:
/**
* 獲取當(dāng)前應(yīng)用程序的包名
* @param context 上下文對象
* @return 返回包名
*/
public static String getAppProcessName(Context context) {
//當(dāng)前應(yīng)用pid
int pid = android.os.Process.myPid();
//任務(wù)管理類
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//遍歷所有應(yīng)用
List<ActivityManager.RunningAppProcessInfo> infos = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info : infos) {
if (info.pid == pid)//得到當(dāng)前應(yīng)用
return info.processName;//返回包名
}
return "";
}
/**
* 獲取程序 圖標(biāo)
* @param context
* @param packname 應(yīng)用包名
* @return
*/
public Drawable getAppIcon(Context context,String packname){
try {
//包管理操作管理類
PackageManager pm = context.getPackageManager();
//獲取到應(yīng)用信息
ApplicationInfo info = pm.getApplicationInfo(packname, 0);
return info.loadIcon(pm);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 獲取程序的版本號
* @param context
* @param packname
* @return
*/
public String getAppVersion(Context context,String packname){
//包管理操作管理類
PackageManager pm = context.getPackageManager();
try {
PackageInfo packinfo = pm.getPackageInfo(packname, 0);
return packinfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return packname;
}
/**
* 獲取程序的名字
* @param context
* @param packname
* @return
*/
public String getAppName(Context context,String packname){
//包管理操作管理類
PackageManager pm = context.getPackageManager();
try {
ApplicationInfo info = pm.getApplicationInfo(packname, 0);
return info.loadLabel(pm).toString();
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return packname;
}
/*
* 獲取程序的權(quán)限
*/
public String[] getAllPermissions(Context context,String packname){
try {
//包管理操作管理類
PackageManager pm = context.getPackageManager();
PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);
//獲取到所有的權(quán)限
return packinfo.requestedPermissions;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 獲取程序的簽名
* @param context
* @param packname
* @return
*/
public static String getAppSignature(Context context,String packname){
try {
//包管理操作管理類
PackageManager pm = context.getPackageManager();
PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);
//獲取當(dāng)前應(yīng)用簽名
return packinfo.signatures[0].toCharsString();
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return packname;
}
/**
* 獲取當(dāng)前展示 的Activity名稱
* @return
*/
private static String getCurrentActivityName(Context context){
ActivityManager activityManager=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName();
return runningActivity;
}
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android自定義View實(shí)現(xiàn)隨手勢滑動控件
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)隨手勢滑動的控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
在Android項(xiàng)目中使用AspectJ的詳細(xì)攻詻
AspectJ是實(shí)現(xiàn)AOP的其中一款框架,內(nèi)部通過處理字節(jié)碼實(shí)現(xiàn)代碼注入,文章給大家提到AspectJ基礎(chǔ)語法和集成AspectJ的方式,對AspectJ在android中使用教程感興趣的朋友跟隨小編一起看看吧2021-06-06
Android多功能時鐘開發(fā)案例(實(shí)戰(zhàn)篇)
這篇文章主要為大家詳細(xì)介紹了Android多功能時鐘開發(fā)案例,開發(fā)了時鐘、鬧鐘、計時器和秒表,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05
Android ListView列表控件的介紹和性能優(yōu)化
這篇文章主要介紹了Android ListView列表控件的介紹和性能優(yōu)化,需要的朋友可以參考下2017-06-06
淺析Android位置權(quán)限以及數(shù)組尋找索引的坑

