Android listing installed applications

How to get list of Installed Apps in Android

Android PackageManager class is used for retrieving various kinds of information related to the application packages that are currently installed on the device. You can get an instance of this class through getPackageManager().

Project Description

  • In this Android 4 example, we will get list of installed apps in Android device and create custom ListView and populate its items using custom BaseAdapter.
  • Here, we are going to implement OnItemClickListener event listener which calls onItemClick() callback method where we retrieve a particular row and create a object containing android application information and start another activity to display the installed app information such as Application name, package name, version, features, required permissions, path info, target SDK version, installed and modified date.

Environment Used

  • JDK 6 (Java SE 6)
  • Eclipse Indigo/Juno IDE for Java EE Developers
  • Android SDK 4.0.3 / 4.2 Jelly Bean
  • Android Development Tools (ADT) Plugin for Eclipse (ADT version 21.0.0)
  • Refer this link to setup the Android development environment or this link to update to a latest version of Android SDK

Prerequisites

Create Android Project

  • Create a new Android Project and enter the Application name as AppsList.
  • Project name as AppsList.
  • Enter the package name as com.ibc.android.demo.appslist.activity.
  • Enter the Activity name as ApkListActivity.
  • Enter the Layout name as main.
  • Click Finish.

strings.xml

Open res/values/strings.xml and replace it with following content.

XML layout files

main layout file (main.xml)

This file defines a layout for displaying the result of installed apps in ListView widget. Open main.xml file in res/layout and copy the following content.

ListView row item layout file (apklist_item)

This layout defines only TextView widget. We can display of the icon of installed app in TextView using setCompoundDrawables() method.

Second Activity’s layout file (apkinfo.xml)

Create AppData class

This class extends android.app.Application which is used to maintain global application state, in this case contains an instance variable android.content.pm.PackageInfo. PackageInfo contains overall information about the contents of a package. This corresponds to all of the information collected from AndroidManifest.xml.

Читайте также:  Mount and storage android

Create a new Java class “AppData.java” in package “com.ibc.android.demo.appslist.app” and copy the following code.

Custom BaseAdapter class

Create a new class “ApkAdapter” in “com.ibc.android.demo.appslist.adapter” package and copy the following code. This class extends android.widget.BaseAdapter to provide custom row layout and data for ListView.

Activity class

MainActivity class (ApkListActivity.java)

Open this activity class and copy the following code. In onCreate(), we get the list of installed apps and filtering out system app.

Second Activity class (ApkInfo.java)

Create a new class “ApkInfo.java” in package “com.ibc.android.demo.appslist.activity” and copy the following code.

AndroidManifest.xml

Output

Run your application
First Screen/Activity

Second Screen/Activity

Project Folder Structure

The complete folder structure of this example is shown below.

Источник

How to Get List of Installed Apps in Android

Android PackageManager class is used to retrieve information on the application packages that are currently installed on the device. You can get an instance of PackageManager class by calling getPackageManager() . PackageManager provides methods for querying and manipulating installed packages and related permissions, etc. In this Android example, we we get list of installed apps in Android.

packageManager.getInstalledApplications() return a List of all application packages that are installed on the device. If we set the flag GET_UNINSTALLED_PACKAGES has been set, a list of all applications including those deleted with DONT_DELETE_DATA (partially installed apps with data directory) will be returned.

1. Creating application layout in xml

activity_main.xml

As you can see in the attached screenshot, we will be creating a ListView to show all of the installed applications in android.

snippet_list_row.xml

This layout is being used by the ListView Adapter for representing application details. It shows application icon, application name and application package.

2. Writing Java class

AllAppsActivity.java

This is the main application class that is used to initialize and list the installed applications. As getting the list of application details from PackageManage is a long running task, we will do that in AsyncTask. Also, this class is using custom Adapter “ApplicationAdapter” for custom ListView.

ApplicationAdapter.java

Download Complete Example

Download complete Eclipse project source code from GitHub.

Источник

Package visibility in Android 11

On Android 10 and earlier, apps could query the full list of installed apps on the system using methods like queryIntentActivities() . In most cases, this is far broader access than is necessary for an app to implement its functionality. With our ongoing focus on privacy, we’re introducing changes on how apps can query and interact with other installed apps on the same device on Android 11. In particular, we’re bringing better scoped access to the list of apps installed on a given device.

Читайте также:  Fortnite android последняя версия

To provide better accountability for access to installed apps on a device, apps targeting Android 11 (API level 30) will see a filtered list of installed apps by default. In order to access a broader list of installed apps, an app can specify information about apps they need to query and interact with directly. This can be done by adding a element in the Android manifest.

For most common scenarios, including any implicit intents started with startActivity() , you won’t have to change anything! For other scenarios, like opening a specific third party application directly from your UI, developers will have to explicitly list the application package names or intent filter signatures like this:

If you use Custom Tabs to open URLs, you might be calling resolveActivity() and queryIntentActivities() in order to launch a non-browser app if one is available for the URL. In Android 11 there’s a better way to do this, which avoids the need to query other apps: the FLAG_ACTIVITY_REQUIRE_NON_BROWSER intent flag. When you call startActivity() with this flag, an ActivityNotFoundException will be thrown if a browser would have been launched. When this happens, you can open the URL in a Custom Tab instead.

In rare cases, your app might need to query or interact with all installed apps on a device, independent of the components they contain. To allow your app to see all other installed apps, Android 11 introduces the QUERY_ALL_PACKAGES permission. In an upcoming Google Play policy update, look for guidelines for apps that need the QUERY_ALL_PACKAGES permission.

When targeting API level 30 and adding a element to your app, use the latest available release of the Android Gradle plugin. Soon we’ll be releasing updates to older Android Gradle plugin versions to add support for this element. You can find more information and use cases about Package Visibility in the developer documentation.

Источник

comoc / AndroidApplicationListing.java

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

// < Locate follows into your class
public static class ApplicationInfo <
public String label;
public String name;
public String packageName;
public Drawable icon;
@Override
public String toString () <
return » label: » + label + » name: » + name + » packageName: «
+ packageName + » icon: » + icon . toString();
>
>;
public static List ApplicationInfo > getApplicationsInfo( Context context) <
List ApplicationInfo > apps = new ArrayList ApplicationInfo > ();
Intent intent = new Intent ( Intent . ACTION_MAIN , null );
intent . addCategory( Intent . CATEGORY_LAUNCHER );
PackageManager pm = context . getPackageManager();
List ResolveInfo > activities = pm . queryIntentActivities(intent, 0 );
Collections . sort(activities, new ResolveInfo . DisplayNameComparator (pm));
for ( ResolveInfo ri : activities) <
ApplicationInfo info = new ApplicationInfo ();
info . packageName = ri . activityInfo . packageName;
info . name = ri . activityInfo . name;
info . label = ( String ) ri . loadLabel(pm);
info . icon = ri . activityInfo . loadIcon(pm);
apps . add(info);
>
return apps;
>
// >
// Usage
class MyActivity extends Activity <
void listApps () <
List ApplicationInfo > apps = getApplicationsInfo( this );
for ( ApplicationInfo info : apps) <
// do something.
>
>
public static class ApplicationInfo <
public String label;
public String name;
public String packageName;
public Drawable icon;
@Override
public String toString () <
return » label: » + label + » name: » + name + » packageName: «
+ packageName + » icon: » + icon . toString();
>
>;
public static List ApplicationInfo > getApplicationsInfo ( Context context ) <
List ApplicationInfo > apps = new ArrayList ApplicationInfo > ();
Intent intent = new Intent ( Intent . ACTION_MAIN , null );
intent . addCategory( Intent . CATEGORY_LAUNCHER );
PackageManager pm = context . getPackageManager();
List ResolveInfo > activities = pm . queryIntentActivities(intent, 0 );
Collections . sort(activities, new ResolveInfo . DisplayNameComparator (pm));
for ( ResolveInfo ri : activities) <
ApplicationInfo info = new ApplicationInfo ();
info . packageName = ri . activityInfo . packageName;
info . name = ri . activityInfo . name;
info . label = ( String ) ri . loadLabel(pm);
info . icon = ri . activityInfo . loadIcon(pm);
apps . add(info);
>
return apps;
>
>
Читайте также:  Jagged alliance android аналоги

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Android Get List of Installed Apps Package Name With Icons Programmatically

In this tutorial we would going to create an android application which would display us all the only externally installed applications on our android mobile phone device. The application display into custom ListView (RecyclerView) and show us App icon, app name and app package name on screen. This application is designed into RecyclerView along with CardView. So here is the complete step by step tutorial for Android Get List of Installed Apps Package Name With Icons Programmatically.

Note: Read below steps very carefully to add CardView and RecyclerView library inside your current project.

1. Open your project’s build.gradle ( Module : app ) file.

2. Please add below code inside your build.gradle ( Module : app ) file.

3. Screenshot of build.gradle ( Module : app ) file after adding above code.

Here your go now both libraries is successfully imported into our project now next step is to start coding.

How to Android Get List of Installed Apps Package Name With Icons Programmatically.

Code for MainActivity.java file.

Code for ApkInfoExtractor.java file.

Code for AppsAdapter.java file.

Code for activity_main.xml layout file.

Code for cardview_layout.xml layout file.

Screenshot:-

Click here to download Android Get List of Installed Apps Package Name With Icons Programmatically project with source code.

Источник

Оцените статью