Get list of app icons and app names of all installed apps in Sketchware

We can create a list of app names, app icons, app versions and app package names from information received using PackageInfo class.


Follow the steps below to create a list of all installed apps, with app name, app icons, package name, version name and version code.

1. In VIEW area of your sketchware project, in main.xml add a ListView.
2. Add a new CustomView custm.xml and in this add an ImageView and four TextViews.
3. For the ImageView​ set width and height as 60dp and scale_type as FIT_XY.
4. In main.xml, for ListView select custm as customView.
5. In LOGIC area, add four List String (list11, list12, list13, and list14), add a List Map (list1), and an Intent component i. These four will act as list of app name, package name, version name, and version code.


6. In onCreate event, add an add source directly block. Inside the block add following code.

List<android.content.pm.PackageInfo> listn = getApplicationContext().getPackageManager().getInstalledPackages(0);

This will create a list of PackageInfo of all installed apps.


7. Add another add source directly block and add following code in it.

for (android.content.pm.PackageInfo packageInfo : listn) {
list11.add(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
list12.add(packageInfo.packageName);
list13.add(packageInfo.versionName);

list14.add(String.valueOf(packageInfo.versionCode));

This code will retrieve information from PackageInfo list, and add items to new lists. It will add all app names to list11, all package names to list12, all version names to list13, and all version codes to list14.

8. Next, use Block add key X value X to List Map list1.

9. Add another add source directly block and put following code in it:
{
HashMap<String, android.graphics.drawable.Drawable> _item = new HashMap<String, android.graphics.drawable.Drawable>();
_item.put("itm",packageInfo.applicationInfo.loadIcon(getPackageManager()));
list6.add(_item);
}

}
This code gets app icons from the list of PackageInfo and adds them to list6.

10. After this add a ListView setListCustomViewData List Map block, as shown in image below.

11. Add another add source directly block. Inside the block, add a } bracket to close onCreate event, and after that write code for a new HashMap list, list6. This will act as list of icons. The code to be used is given below.

}
private ArrayList < HashMap < String, android.graphics.drawable.Drawable> > list6 = new ArrayList<>(); private void nothing() {

This should be the last block in onCreate event. There should be no block placed after this. This code can also be added in a more block.

12. Add a new event ListView onBindCustomView, and set the text of all TextViews in CustomView, to the String lists list11, list12, list13, and list14. Also add code to set icons as image of imageview1. The blocks to be used is shown in image below.

The code to be used in add source directly block is:

imageview1.setImageDrawable(list6.get((int)_position).get("itm"));

Here imageview1, is id of Imageview in CustomView, and list6 is the new Drawable list created in above step.

13. Add another​ event ListView onItemClicked, and here use Intent component blocks to open the app when it is clicked. The blocks to be used is shown in image below.

14. Save and run the project. You will see a custom list with list of all installed apps with icons, package names, etc.

Watch the video below for better understanding.
     

Comments

  1. I canr doend liatview on blond view

    ReplyDelete
  2. Please tell me how to implement the search function in this application?

    ReplyDelete
    Replies
    1. list11 is the list of all app names. Add an EditText and search this list using repeat Block and if..else.. block in EditText onTextChanged event.

      Delete
    2. This comment has been removed by the author.

      Delete
  3. Check the blocks used in EditText onTextChanged on this post:
    http://www.sketchwarehelp.com/2017/09/how-to-create-dictionary-app-in.html?m=1

    ReplyDelete
    Replies
    1. Thank you for having responded to me. But I did not understand the method)) I'll try again.

      Delete
    2. sanjeev Can you detail all informations.... I don't understand how to do with the other subject...🤔

      Delete
    3. This comment has been removed by the author.

      Delete
  4. I can not get the onclick start app code to work

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. Add this code in list view "on item selected"


      private Intent i = new Intent();
      i = getPackageManager().getLaunchIntentForPackage(list12.get((int)(_position)));
      startActivity(i);

      Delete
  5. Hiw to filter system and user apps? I tried it with codes from stackoverflow.com but the did not work for me. Can u help me or is it not possible in Sketchware.

    ReplyDelete
  6. How to filter user installed app packages over system packages
    Please anyone help me out this

    ReplyDelete
    Replies
    1. Add this code instead of a normal for loop that sanjeev has shown.

      for (android.content.pm.PackageInfo packageInfo : listn) {

      if((packageInfo.applicationInfo.flags & android.content.pm.ApplicationInfo.FLAG_SYSTEM)==0){
      list11.add(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
      list12.add(packageInfo.packageName);
      {
      HashMap _item = new HashMap();
      _item.put("itm",packageInfo.applicationInfo.loadIcon(getPackageManager()));
      list6.add(_item);
      }
      }
      }

      I removed list13 and list14. Kindly add them on your own.

      Delete
    2. Thanks a lot to you and to Sanjeev

      Delete
  7. Is there a way to decompile the apk content

    ReplyDelete
    Replies
    1. só copiar ele pra outro caminho trocando o .apk por .zip

      Delete
  8. Is there a way to decompile the apk content

    ReplyDelete
  9. I have an application package name. Is there any way to get the lib path, data path of this application to textview? package name example: com.example.name 😶

    ReplyDelete
  10. I have an application package name. Is there any way to get the lib path, data path of this application to textview? package name example: com.example.name 😶

    ReplyDelete
  11. How i can get info of only running app. Plz reply

    ReplyDelete
  12. Hello everybody. Can anyone please tell me the code to get the list of USER INSTALLED APPS (not system). If anyone knows that please mail it to gouthamsanthosh04@gmail.com
    It would be a great help.

    ReplyDelete
  13. Hello everybody. Can anyone please tell me the code to get the list of USER INSTALLED APPS (not system). If anyone knows that please mail it to gouthamsanthosh04@gmail.com
    It would be a great help.

    ReplyDelete
  14. This comment has been removed by the author.

    ReplyDelete
  15. How do you prevent system apps from appearing in the list. I'd like to use this as a sort of launcher system but dont wanna mess with the system app

    ReplyDelete
  16. How to hide android system apps

    ReplyDelete
  17. How can I sort the list alphabetically, I was only able to sort the listrings but not the drawable

    ReplyDelete
  18. Hoe can i make the apps load faster instead of waiting 5 secs?

    ReplyDelete

Post a Comment

Popular posts from this blog

Simple car racing android game in Sketchware

Creating a Drawing View in Sketchware

Enable Fullscreen for Youtube videos in WebView

How to enable upload from webview in Sketchware?

List of Calendar Format symbols valid in Sketchware