android獲取安裝的應用
① Android-Android如何得到最初安裝時應用的名稱
應用的名稱不是文件名得來的。是通過packagemanager介面獲取。
final PackageManager pm = context.getPackageManager();
ApplicationInfo ai;
try {
ai = pm.getApplicationInfo(packageName, 0);
} catch (final NameNotFoundException e) {
ai = null;
}
final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");
在用戶安裝完之後,可以通過監聽廣播,獲取安裝的應用名稱信息。
② 如何查詢android中安裝的應用
之前也就是Android系統5.0之前我們一貫的做法去棧頂應用的方法是用getRunningTask,但是5.0之後被google給屏蔽了,但是對於我們做應用鎖,或者桌面懸浮窗的小夥伴們可如何是好,因為沒有這些我們是無法判斷當前的棧頂程序是誰,我們就不能對之進行程序加密,或者隱藏和顯示桌面懸浮窗了。總會有方法的,查資料發現大家都在用」有權查看使用情況的應用程序「 也就是用UsageStatsManager獲取棧頂程序,但是他需要我們程序賦予App許可權,也就是」有權查看使用情況的應用程序「
就是在安全-高級-有權查看使用情況的應用 在這個模塊中勾選上指定APP就可以獲取到棧頂的應用名。
程序中我們用Settings.ACTION_USAGE_ACCESS_SETTINGS 這個常量就是跳轉到設置界面。
注意:這個設置被部分廠商給拿掉了,例如:小米和魅族
這個選項需要的許可權
[html] view plain
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
③ android 中獲取當前設備安裝了哪些應用
這是獲得系統已安裝的所有應用的一種方法:
java">privateStringgetAllApp(Contextcontext){
StringpackageName="";
PackageManagerpm=context.getPackageManager();
List<PackageInfo>packagelist=pm.getInstalledPackages(0);
for(inti=0;i<packagelist.size();i++){
PackageInfopackageInfo=packagelist.get(i);
packageName=packageName+" 應用包名:"+packageInfo.packageName;
}
returnpackageName;
}
以上內容在Android 5.0測試通過,沒有使用任何已被Google棄用的方法,而且SDK版本要求不高,理論上向上、向下都可以兼容。
(答題不易,正確請採納)
④ 如何獲取android手機上已安裝軟體的下載位置或來源
下載位置在於有沒有刪除,沒有刪除的話,搜索下apk文件安裝包即可。
下載來源就沒法判斷了,因為方式太多了。安裝包不會顯示下載來源的。
如果只是想要安裝包,可以搜索相關軟體名稱。
或者用es 幸運破解器之類的軟體提取或者備份已經安裝的軟體。
⑤ 如何獲取android手機上已安裝軟體的下載位置或來源
android手機安裝的軟體在SD卡上無法找到的。但是android手機本身就會對apk做備份處理,也就是說只要手機上裝的應用,都可以在手機上找出來
查找方式:
用戶安裝的第三方應用,apk文件保存在 /data/app 目錄下
系統自帶的應用,apk文件保存在 /system/app 目錄下
android手機本身是無法查看的,需要連接到電腦上才能查看
android 手機是linux內核,/data /system目錄都是屬於 root用戶才能查看的,因此你需要先獲取root許可權才能查看
⑥ 如何提取已經安裝在Android系統的apk
一、APK生成 odex文件方法:
編譯開源GIT上的build/tools /dexpreopt/dexopt-wrapper這個,使用dexopt-wrapper即可,操作步驟將dexopt-wrapper放到/data/local目錄中,使用adb shell執行linux命令行,使用cd命令進入/data/local目錄,cd /data/local./dexoptwrapper android123.apk android123.odex
二、合並odex和 少dex的apk 為完整的apk文件
需要用到的工具是smali,一個開源的java處理軟體:
1.下載的baksmali和 smali的jar文件到工作目錄
2.把ROM裡面的core.odex, ext.odex, framework.odex, android.policy.odex, services.odex這5個文件也放在同一目錄(也可以放在別的目錄,通過設置BOOTCLASSPATH指定,默認就是當前目錄)。
例:以teeter為例子 (HTC一些Android常常會內置),ROM裡面拿出來的可能是2個文件,teeter.apk + teeter.odex。
1、分解odex文件:java -jar baksmali-1.2.1.jar -x teeter.odex如果沒其他問題,會在工作目錄生成一個out的目錄,裡面是分解出來的一些文件,我們在此不深究這些文件的作用。
2、把分解得到的文件變成classes.dex:java -Xmx512M -jar smali-1.2.1.jar out -o classes.dex,這樣得到了一個有用的classes.dex文件
3、用WinZip或者WinRAR打開teeter.apk文件,把這個classes.dex 放進去
4、最後再用signapk把最新得到的這個包含classes.dex的apk重新簽署一下 (Auto Sign簽名工具往期的文章里有下載),就生成一個可以安裝的單獨APK程序了。
5、簽名完成後即可安裝使用了
⑦ android怎麼獲取已安裝appl
android這邊提供了相應的介面。
[java] view plain
final PackageManager packageManager = getActivity().getPackageManager();//獲取packagemanager
List< PackageInfo> pinfo = packageManager.getInstalledPackages(0);//獲取所有已安裝程序的包信息
if(pinfo != null){
for(int i = 0; i < pinfo.size(); i++){
String packName = pinfo.get(i).packageName;
Log.d("info", "-->"+packName);
}
}
上面的例子可以列印出安裝軟體的包名。每個程序的包名在android手機里都是唯一的。
判斷手機是否安裝了某個程序,如果安裝了此程序,刪除它。
[java] view plain
private void uninstallSoftware(Context context, String name) {
final PackageManager packageManager = context.getPackageManager();
try {
PackageInfo pInfo = packageManager.getPackageInfo(name,
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
if(pInfo!=null){
//刪除軟體
Uri uri = Uri.parse("package:"+ name);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
context.startActivity(intent);
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
從android2.2開始軟體可以安裝到SD卡上,所以也有相應介面判斷程序是否安裝到SD卡上
[java] view plain
private void isInstallOnSd(Context context,String name){
PackageManager pm=context.getPackageManager();
ApplicationInfo appInfo;
try {
appInfo = pm.getApplicationInfo(name, 0);
if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
// App on sdcard
Log.d("info", "app on sd");
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
⑧ 通過adb和shell 怎樣獲取Android設備已安裝的App
解決方案1:
你想獲取apk文件還是什麼?直接adb pull /system/app/xx.apk D:\ 就可以獲取到電腦上
解決方案2:
adb shell 'pm list packages -f' | sed -e 's/.*=//' | sort
解決方案3:
不是查看自帶的安裝app
我是想查看,目個app是否安裝成功!
比如我新安裝了一個aaa.apk
我怎麼知道這個aaa.apk 安裝成功!
怎麼通過adb shell命令來 知道這個aaa是否安裝成功!
⑨ android怎麼獲取剛剛下載安裝的APK的APP名字和圖片
用intentfilter獲取安裝的apk
包名,在BroadcastReceiver裡面就可以拿到安裝的包名和APP,等基本信息,再利用packageManager的功能就可能放到listView裡面.
⑩ Android該怎樣獲取系統上安裝的APP信息
publicclass AppInfo {
public String appName="";
public String packageName="";
public String versionName="";
publicint versionCode=0;
public Drawable appIcon=null;
publicvoid print()
{
Log.v("app","Name:"+appName+" Package:"+packageName);
Log.v("app","Name:"+appName+" versionName:"+versionName);
Log.v("app","Name:"+appName+" versionCode:"+versionCode);
}
}
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里了。