简体   繁体   English

如何在Android手机上安装所有应用程序

[英]How to get all apps installed on android phone

This is the code that i have at the moment but i still can't get a list of all the apps on the phone. 这是我目前的代码,但我仍然无法获得手机上所有应用的列表。 Does anyone see what i am doing wrong? 有谁看到我做错了什么?

public class GetAppList extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            List<PackageInfo> appListInfo1 = this.getPackageManager()
            .getInstalledPackages(0);
            JSONArray ja = new JSONArray();
            try {
                HttpClient httpclient = new DefaultHttpClient();
                Object sendDataUrl = null;
                HttpPost request = new HttpPost(sendDataUrl.toString());
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                ContextWrapper context = null;
                PackageManager pm = context.getPackageManager();
                List<PackageInfo> appListInfo = pm.getInstalledPackages(0);
                for (PackageInfo p : appListInfo) {
                    if (p.applicationInfo.uid > 10000) {
                        JSONObject jo = new JSONObject();
                        jo.put("label", p.applicationInfo.loadLabel(pm).toString());
                        jo.put("packageName", p.applicationInfo.packageName);
                        ja.put(jo);
                    }
                    System.out.print(ja);
                }        
        } catch (Exception e) {
            // TODO: handle exception
        }
        finally {
            // ... cleanup that will execute whether or not an error occurred ...
        }



}catch (Exception e) {
    // TODO: handle exception
}
finally {
    // ... cleanup that will execute whether or not an error occurred ...
}
    }}

Sorry cant get this to format the code properly. 抱歉,无法正确格式化代码。

This code logs name and package name of all the installed applications. 此代码记录所有已安装应用程序的名称和包名称。 You can easily check the log using LogCat (if you are using Eclipse). 您可以使用LogCat轻松检查日志(如果您使用的是Eclipse)。

Package name - name of the app's package. 包名称 - 应用程序包的名称。

Name - text label associated with the application. 名称 - 与应用程序关联的文本标签。 You can't use just appInfo.name as it will return null . 您不能只使用appInfo.name ,因为它将返回null Using appInfo.loadLabel(packageManager) you get the actual app's name like Speech Recorder instead of package name com.android.speechrecorder . 使用appInfo.loadLabel(packageManager)您可以获得实际应用程序的名称,如Speech Recorder,而不是包名com.android.speechrecorder

final PackageManager packageManager = getPackageManager();
List<ApplicationInfo> installedApplications = 
   packageManager.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo appInfo : installedApplications)
{
    Log.d("OUTPUT", "Package name : " + appInfo.packageName);
    Log.d("OUTPUT", "Name: " + appInfo.loadLabel(packageManager));
} 

This is the code I use to list applications: 这是我用来列出应用程序的代码:

PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);

String activityName = rInfo.activityInfo.name;
List<ResolveInfo> list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED);

for (ResolveInfo rInfo : list) {
    pkg = rInfo.activityInfo.applicationInfo.packageName;
    if (pm.getLaunchIntentForPackage(pkg) == null) {
      continue;
    }
    String label = rInfo.activityInfo.applicationInfo.loadLabel(pm).toString();
    arrayList.add(new AppEntry(label, activityName, pkg, null));
}

If you later on want to run application only knowing pkg and activityName you can do: 如果您以后想要运行仅知道pkg和activityName的应用程序,您可以执行以下操作:

Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName(pkg, activityname);
ctx.startActivity(intent);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM