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.
- Kuidas Excelis kohandatud malle luua
- Kuidas toita hobust piparmündiga
- Kuidas mängida robloxi Chromebookis
- Azure'i salvestuskontode kasutamine plokkide failide tabeleid ja järjekordi
- Kuidas tüdrukuga toime tulla