In this tutorial we will learn how to get System Apps in ListView with icon , title , package name. For this purpose we will use custom ListView.
✓ Display User System Apps in ListView with icon , title , package
✓ Display total number of User Installed apps
✓ Handle On click(Display obrolan to open app or open app info)
activity_main.xml
MainActivity.java
✓ Display User System Apps in ListView with icon , title , package
✓ Display total number of User Installed apps
✓ Handle On click(Display obrolan to open app or open app info)
Step 1: Create a new project OR Open your project
Step 2: Create a new "Layout Resource File" in res>layout and name it as "installed_app_list.xml"
Step 2: Code
installed_app_list.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:padding="3dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="5dp"><ImageViewandroid:id="@+id/app_icon"android:layout_width="48dp"android:layout_height="48dp"/><LinearLayoutandroid:layout_marginLeft="3dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:layout_marginStart="3dp"><TextViewandroid:id="@+id/list_app_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:textStyle="bold"android:textSize="16dp"android:text="App Name"/><TextViewandroid:id="@+id/app_package"android:text="App Package Name"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout></LinearLayout></LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/countApps"android:text="Count: "android:padding="5dp"android:layout_width="match_parent"android:layout_height="wrap_content" /><ListViewandroid:id="@+id/system_app_list"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>
MainActivity.java
package com.blogspot.devofandroid.myapplication;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {private List<AppList> systemAppsList;private AppAdapter systemAppAdapter;ListView systemApsLv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);systemApsLv = (ListView) findViewById(R.id.system_app_list);systemAppsList = getSystemApps();systemAppAdapter = new AppAdapter(MainActivity.this , systemAppsList);systemApsLv.setAdapter(systemAppAdapter);systemApsLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView , View view , final int i , long l) {String[] colors = {" Open App" , " App Info"};AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("Choose Action").setItems(colors , new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog , int which) { // The 'which' argument contains the index position of the selected item if (which==0){ //open app Intent intent = getPackageManager().getLaunchIntentForPackage(systemAppsList.get(i).packages); if(intent != null){ startActivity(intent); } else { Toast.makeText(MainActivity.this , systemAppsList.get(i).packages + " Error , Please Try Again..." , Toast.LENGTH_SHORT).show(); } } //open info if (which==1){ Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + systemAppsList.get(i).packages)); Toast.makeText(MainActivity.this , systemAppsList.get(i).packages , Toast.LENGTH_SHORT).show(); startActivity(intent); }}});builder.show();}});//Total Number of System-Apps(i.e. List Size)String abc = systemApsLv.getCount()+"";TextView countApps = (TextView)findViewById(R.id.countApps);countApps.setText("Total System Apps: "+abc);Toast.makeText(this , abc+" Apps" , Toast.LENGTH_SHORT).show();}//get System userappsprivate List<AppList> getSystemApps() {PackageManager pm = getPackageManager();List<AppList> apps = new ArrayList<AppList>();List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);//List<PackageInfo> packs = getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);for (int i = 0; i < packs.size(); i++) {PackageInfo p = packs.get(i);if ((isSystemPackage(p))) {String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();Drawable icon = p.applicationInfo.loadIcon(getPackageManager());String packages = p.applicationInfo.packageName;apps.add(new AppList(appName , icon , packages));}}return apps;}private boolean isSystemPackage(PackageInfo pkgInfo) {return (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;}public class AppAdapter extends BaseAdapter {public LayoutInflater layoutInflater;public List<AppList> listStorage;public AppAdapter(Context context , List<AppList> customizedListView) {layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);listStorage = customizedListView;}@Overridepublic int getCount() {return listStorage.size();}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position , View convertView , ViewGroup parent) {int mLastPosition = 0;float initialTranslation = (mLastPosition <= position ? 500f : -500f);ViewHolder listViewHolder;if(convertView == null){listViewHolder = new ViewHolder();convertView = layoutInflater.inflate(R.layout.installed_app_list , parent , false);listViewHolder.textInListView = (TextView)convertView.findViewById(R.id.list_app_name);listViewHolder.imageInListView = (ImageView)convertView.findViewById(R.id.app_icon);listViewHolder.packageInListView=(TextView)convertView.findViewById(R.id.app_package);convertView.setTag(listViewHolder);}else{listViewHolder = (ViewHolder)convertView.getTag();}listViewHolder.textInListView.setText(listStorage.get(position).getName());listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());listViewHolder.packageInListView.setText(listStorage.get(position).getPackages());return convertView;}class ViewHolder{TextView textInListView;ImageView imageInListView;TextView packageInListView;}}public class AppList {private String name;Drawable icon;private String packages;public AppList(String name , Drawable icon , String packages) {this.name = name;this.icon = icon;this.packages = packages;}public String getName() {return name;}public Drawable getIcon() {return icon;}public String getPackages() {return packages;}}}
0 Response to "Get List Of System Apps With Icon| Title| Package Name Programmatically"