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里了。