【发布时间】:2012-01-13 08:29:11
【问题描述】:
或者,有没有一种简单的方法可以知道系统应用程序的包名?
【问题讨论】:
或者,有没有一种简单的方法可以知道系统应用程序的包名?
【问题讨论】:
我只是在开发一个应用程序储物柜,它有一个重要应用程序的类别,供用户锁定它们。 显然默认的短信应用程序是要锁定的重要应用程序。 所以我创建了我自己的默认短信应用程序包名称列表。 我希望这对您有所帮助,并且其他人可以帮助我改进此列表:
"com.google.android.apps.messaging"
"com.jb.gosms"
"com.concentriclivers.mms.com.android.mms"
"fr.slvn.mms"
"com.android.mms"
"com.sonyericsson.conversations"
【讨论】:
你可以得到
public class ListofAppinMyDevice {
public class PInfo {
public String appname = "";
public String pname = "";
public String versionName = "";
public int versionCode = 0;
}
public ArrayList<PInfo> getInstalledApps(boolean getSysPackages)
{
ArrayList<PInfo> res = new ArrayList<PInfo>();
List<PackageInfo> packs = AppUtils.mContext.getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
PackageInfo p = packs.get(i);
ApplicationInfo s=p.applicationInfo;
if(((s.flags & ApplicationInfo.FLAG_SYSTEM)!=1))
{
PInfo newInfo = new PInfo();
newInfo.appname = p.applicationInfo.loadLabel(AppUtils.mContext.getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.versionName = p.versionName;
newInfo.versionCode = p.versionCode;
System.out.println("3rd party apps-------------------"+p.packageName +"--------"+newInfo.appname);
res.add(newInfo);
}
if ((!getSysPackages) ) {
continue ;
}
}
return res;
}
}
//您可以通过以下方法获取系统安装的应用程序
public static void listPackages() {
ListofAppinMyDevice getmyApp=new ListofAppinMyDevice();
apps =getmyApp.getInstalledApps(true);
/* false = will get 3rd part package detials
true -will get all system packages */
System.out.println("Total InstalledApps in your device--=="+apps.size());
final int max = apps.size();
applist=new StringBuilder();
for (int i=0; i<max; i++) {
String packageName=apps.get(i).pname;
}
【讨论】:
你到底想做什么? 或者,为什么需要这样的列表?
作为一般建议,您不应该根据静态列表编写任何代码,因为与此列表相关的任何内容都可能会发生变化。
【讨论】: