See vastus on õige installitud rakenduste näitamise ja otsingufunktsiooni lisamise loend. Kotlin activity_all_installed_app.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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" tools:context=".AllInstalledAppActivity"> <TextView android:id="@+id/totalInstalledApp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/total_Installed_Apps" android:textStyle="bold" android:textAlignment="center" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="vertical" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/totalInstalledApp" tools:listitem="@layout/installed_app_layout" /> </androidx.constraintlayout.widget.ConstraintLayout> 

install_app_layout.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_margin="4dp" android:elevation="6dp" android:background="?attr/selectableItemBackground"> <androidx.cardview.widget.CardView android:id="@+id/cardview" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_alignParentEnd="true" app:cardCornerRadius="5dp" app:cardUseCompatPadding="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/app_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:contentDescription="@string/todo" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/list_app_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:text="@string/app_name" android:textSize="16sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/app_icon" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/app_package" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:text="@string/app_package_name" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/app_icon" app:layout_constraintTop_toBottomOf="@+id/list_app_name" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.cardview.widget.CardView> </androidx.constraintlayout.widget.ConstraintLayout> 

AppModel.kt

import android.graphics.drawable.Drawable class AppModel(private var name:String, private var icon: Drawable, private var packages:String) { fun getName(): String { return name } fun getIcon(): Drawable { return icon } fun getPackages(): String { return packages } } 

AppAdapter.kt

 import android.app.AlertDialog import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.materialsouk.allcodeapp.R import com.materialsouk.allcodeapp.models.AppModel import java.util.ArrayList import android.content.Intent import android.net.Uri import android.provider.Settings import android.widget.Toast class AppAdapter(private val context: Context, private var appModelList: ArrayList<AppModel>) : RecyclerView.Adapter<AppAdapter.ViewHolder>() { class ViewHolder(ItemView: View) : RecyclerView.ViewHolder(ItemView) { val appNameTxt: TextView = itemView.findViewById(R.id.list_app_name) val appPackageNameTxt: TextView = itemView.findViewById(R.id.app_package) val appIcon: ImageView = itemView.findViewById(R.id.app_icon) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view: View = LayoutInflater.from(parent.context) .inflate(R.layout.installed_app_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.appNameTxt.text = appModelList[position].getName() holder.appIcon.setImageDrawable(appModelList[position].getIcon()) holder.appPackageNameTxt.text = appModelList[position].getPackages() holder.itemView.setOnClickListener { val dialogListTitle = arrayOf("Open App", "App Info") val builder: AlertDialog.Builder = AlertDialog.Builder(context) builder.setTitle("Choose Action") .setItems( dialogListTitle ) { _, which -> when (which) { 0 -> { val intent = context.packageManager.getLaunchIntentForPackage(appModelList[position].getPackages()) if (intent != null) { context.startActivity(intent) }else{ Toast.makeText(context,"System app is not open for any reason.",Toast.LENGTH_LONG).show() } } 1 -> { val intent = Intent() intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS intent.data = Uri.parse("package:${appModelList[position].getPackages()}") context.startActivity(intent) } } } builder.show() } } override fun getItemCount(): Int { return appModelList.size } } 

See on menüü
search_menu.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/app_bar_search" android:icon="@drawable/ic_search_black_24dp" android:title="@string/search" app:showAsAction="ifRoom|withText" app:actionViewClass="androidx.appcompat.widget.SearchView"/> </menu> 

AllInstalledAppActivity.kt

 import android.annotation.SuppressLint import android.app.Dialog import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.recyclerview.widget.RecyclerView import com.materialsouk.allcodeapp.models.AppModel import android.content.pm.PackageInfo import android.content.pm.ApplicationInfo import android.os.Handler import android.os.Looper import android.view.Menu import android.widget.LinearLayout import android.widget.TextView import androidx.appcompat.widget.SearchView import com.materialsouk.allcodeapp.adapters.AppAdapter import java.util.* import kotlin.collections.ArrayList class AllInstalledAppActivity : AppCompatActivity() { private lateinit var recyclerView: RecyclerView private lateinit var installedAppsList: ArrayList<AppModel> private lateinit var installedAppAdapter: AppAdapter @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_all_installed_app) recyclerView = findViewById(R.id.recycler_view) val loadingDialog = Dialog(this) loadingDialog.setContentView(R.layout.loading) loadingDialog.window!!.setLayout( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ) loadingDialog.setCancelable(false) installedAppsList = ArrayList() loadingDialog.show() Handler(Looper.getMainLooper()).postDelayed({ getInstalledApps() loadingDialog.dismiss() findViewById<TextView>(R.id.totalInstalledApp).text = "${getString(R.string.total_Installed_Apps)} ${installedAppsList.size}" installedAppAdapter = AppAdapter(this, installedAppsList) recyclerView.adapter = installedAppAdapter }, 500) } @SuppressLint("QueryPermissionsNeeded") private fun getInstalledApps(): ArrayList<AppModel> { installedAppsList.clear() val packs = packageManager.getInstalledPackages(0) for (i in packs.indices) { val p = packs[i] if (!isSystemPackage(p)) { val appName = p.applicationInfo.loadLabel(packageManager).toString() val icon = p.applicationInfo.loadIcon(packageManager) val packages = p.applicationInfo.packageName installedAppsList.add(AppModel(appName, icon, packages)) } } installedAppsList.sortBy { it.getName().capitalized() } return installedAppsList } private fun String.capitalized(): String { return this.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } } private fun isSystemPackage(pkgInfo: PackageInfo): Boolean { return pkgInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0 } override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.search_menu, menu) val search = menu.findItem(R.id.app_bar_search) val searchView = search.actionView as SearchView searchView.maxWidth = android.R.attr.width searchView.queryHint = "Search app name or package" searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { return false } @SuppressLint("NotifyDataSetChanged") override fun onQueryTextChange(newText: String?): Boolean { val appModelArrayList: ArrayList<AppModel> = ArrayList() for (i in installedAppsList) { if (i.getName().lowercase(Locale.getDefault()).contains( newText!!.lowercase( Locale.getDefault() ) ) || i.getPackages().lowercase(Locale.getDefault()).contains( newText.lowercase( Locale.getDefault() ) ) ) { appModelArrayList.add(i) } } installedAppAdapter = AppAdapter(this@AllInstalledAppActivity, appModelArrayList) recyclerView.adapter = installedAppAdapter installedAppAdapter.notifyDataSetChanged() return true } }) return super.onCreateOptionsMenu(menu) } } 

Vaata arutelu Artikli täiustamine Salvesta artikkel

  • Lugege
  • Arutage

Vaata arutelu Artikli täiustamine Salvesta artikkel Selles artiklis näitame kõigi teie Android-telefoni installitud rakenduste loendit. Nii et siin õpime, kuidas seda funktsiooni kolmel erineval viisil rakendada . Pange tähele, et me kavatseme seda projekti rakendada Java keele abil.

Samm-sammult rakendamine

1. samm: looge uus projekt Android Studios uue projekti loomiseks vaadake jaotist Kuidas Android Studios uut projekti luua/alustada. Pange tähele, et valige programmeerimiskeeleks Java . 2. toiming. Töötage failiga activity_main.xml Navigeerige rakendusse > res > layout > activity_main.xml ja lisage sellele failile allolev kood. Allpool on faili activity_main.xml kood.

XML

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" android:padding="16sp" tools:context=".MainActivity"> <Button android:id="@+id/check" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:onClick="getallapps" android:text="Get Installed Apps" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/totalapp" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/check" /> <ListView android:id="@+id/listview" android:layout_width="365dp" android:layout_height="523dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/totalapp" tools:layout_editor_absoluteY="150dp" /> </androidx.constraintlayout.widget.ConstraintLayout>

1. meetod

Minge faili MainActivity.java ja vaadake järgmist koodi. Allpool on faili MainActivity.java kood. Koodi täpsemaks mõistmiseks lisatakse koodi sisse kommentaarid.

Java

import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.util.List; public class MainActivity extends AppCompatActivity { ListView listView; TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listview); text = findViewById(R.id.totalapp); } public void getallapps(View view) { List<ApplicationInfo> infos = getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA); String[] apps = new String[infos.size()]; int i = 0; for (ApplicationInfo info : infos) { apps[i] = info.packageName; i++; } listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, apps)); text.setText(infos.size() + " Apps are installed"); } @Override protected void onStart() { super.onStart(); } } Väljund:

2. meetod

Minge faili MainActivity.java ja vaadake järgmist koodi. Allpool on faili MainActivity.java kood. Koodi täpsemaks mõistmiseks lisatakse koodi sisse kommentaarid.

Java

import android.content.pm.PackageInfo; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.util.List; public class MainActivity extends AppCompatActivity { ListView listView; TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listview); text = findViewById(R.id.totalapp); } public void getallapps(View view) { List<PackageInfo> packList = getPackageManager().getInstalledPackages(0); String[] apps = new String[packList.size()]; for (int i = 0; i < packList.size(); i++) { PackageInfo packInfo = packList.get(i); apps[i] = packInfo.applicationInfo.loadLabel(getPackageManager()).toString(); } listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, apps)); text.setText(packList.size() + " Apps are installed"); } @Override protected void onStart() { super.onStart(); } } Väljund:

3. meetod

Minge faili MainActivity.java ja vaadake järgmist koodi. Allpool on faili MainActivity.java kood. Koodi täpsemaks mõistmiseks lisatakse koodi sisse kommentaarid.

Java

import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { ListView listView; TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listview); text = findViewById(R.id.totalapp); } public void getallapps(View view) throws PackageManager.NameNotFoundException { final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> ril = getPackageManager().queryIntentActivities(mainIntent, 0); List<String> componentList = new ArrayList<String>(); String name = null; int i = 0; String[] apps = new String[ril.size()]; for (ResolveInfo ri : ril) { if (ri.activityInfo != null) { Resources res = getPackageManager().getResourcesForApplication(ri.activityInfo.applicationInfo); if (ri.activityInfo.labelRes != 0) { name = res.getString(ri.activityInfo.labelRes); } else { name = ri.activityInfo.applicationInfo.loadLabel( getPackageManager()).toString(); } apps[i] = name; i++; } } listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, apps)); text.setText(ril.size() + " Apps are installed"); } @Override protected void onStart() { super.onStart(); } } Väljund:

  • Näete kõiki oma Android-telefoni alla laaditud rakendusi, kui avate Google Play poes jaotise Minu rakendused ja mängud.
  • Allalaaditud rakendused on jagatud kaheks osaks: Installitud (kõik praegu teie telefoni installitud rakendused) ja Raamatukogu (kõik rakendused, mis pole praegu installitud).
  • Rohkemate lugude saamiseks külastage Business Insideri kodulehte.

Isegi kui desinstallite rakenduse oma Android-telefonist, ei lähe see kunagi “kaotsi”. Saate selle alati hiljem tasuta uuesti installida, sest Google Play pood mäletab kogu teie ostude ajalugu. Kui olete rakenduse desinstallinud – võib-olla telefoni ruumi vabastamiseks või seetõttu, et te ei arvanud, et hakkate seda uuesti kasutama –, on lihtne see oma rakenduste teegist uuesti üles leida ja uuesti installida.

Vaadake selles artiklis mainitud tooteid:

Samsung Galaxy S10 (alates 899,99 dollarist Best Buy’is)

Kuidas näha kõiki rakendusi, mille olete kunagi Android-telefonis alla laadinud

1. Käivitage Play poe rakendus. 2. Puudutage ekraani paremas ülanurgas kolme horisontaalset joont ja seejärel puudutage menüüs valikut Minu rakendused ja mängud. Kõigi oma rakenduste loendi leiate menüüst “Minu rakendused ja mängud”. Dave Johnson / Business Insider Siin on teil kaks võimalust. 3. Puudutage ekraani ülaosas valikut Installitud. Nagu nimigi ütleb, on see loend kõigist sellesse telefoni praegu installitud rakendustest. 4. Puudutage ekraani ülaosas valikut “Teek”. See on loend kõigist tasuta ja tasulistest rakendustest, mille olete kunagi Google Play poest teie Google’i kontoga seotud telefonidesse alla laadinud ja mis pole praegu sellesse telefoni installitud. Siin on teil veel kaks võimalust.

  • Sellesse telefoni rakenduse uuesti installimiseks puudutage käsku “Install”.
  • Samuti saate rakenduse oma kontolt jäädavalt eemaldada. Selleks puudutage Installi nupust paremal olevat «X».

“Teek” on loend kõigist teie rakendustest, mis pole praegu sellesse telefoni installitud. Dave Johnson / Business Insider

Seotud katvus teemast Kuidas kõike teha: Tehnika:

  • Android-telefonid ei saa iPhone’idega FaceTime’i kasutada, kuid saate hõlpsalt videovestlust pidada kolmel muul viisil

  • Kuidas kustutada kõik Samsung Galaxy S10 meilid

  • Kuidas oma Android-telefonis pildiotsingut Google Chrome’i abil kahel viisil ümber pöörata

  • Kuidas arvutis või Android-telefonis Google Play muusika tellimust tühistada

  • Te ei saa Androidis rühmateksti jätta, kuid saate selle vaigistada või kustutada – toimige järgmiselt

Dave Johnson Vabakutseline kirjanik Dave Johnson on tehnoloogiaajakirjanik, kes kirjutab tarbijatehnoloogiast ja sellest, kuidas tööstus muudab spekulatiivse ulmemaailma tänapäevaseks päriseluks. Dave kasvas üles New Jerseys enne õhuväkke sisenemist, et juhtida satelliite, õpetada kosmoseoperatsioone ja planeerida kosmoselende. Seejärel töötas ta kaheksa aastat Microsofti Windowsi meeskonna sisujuhina. Fotograafina on Dave pildistanud hunte nende loomulikus keskkonnas; ta on ka sukeldumisinstruktor ja mitmete podcastide kaasjuht. Dave on rohkem kui kahe tosina raamatu autor ning teinud kaastööd paljudele saitidele ja väljaannetele, sealhulgas CNET, Forbes, PC World, How To Geek ja Insider.
Insider Inc. saab komisjonitasu, kui ostate meie linkide kaudu.


Leave a comment

Your email address will not be published. Required fields are marked *