رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

نمایش برنامه های نصب شده روی گوشی


پست های پیشنهاد شده

در این آموزش می خواهیم لیست برنامه های نصب شده روی گوشی را در برنامه مشاهده کنیم.

برای این کار پروژه جدیدی ایجاد کنید.

 در فایل activity_main.xml کد زیر را قرار دهید.

[shcode=xml]

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

   

        android:id="@android:id/list"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content" />

[/shcode]

فایل دیگری به نام snippet_list_row.xml ایجاد کنید و کد زیر را در آن قرار دهید. این فایل برای سفارشی سازی لیست ویو می باشد.

[shcode=xml]<?xml version="1.0" encoding="utf-8"?>

    android:layout_width="fill_parent"

    android:layout_height="wrap_content" >

   

        android:id="@+id/app_icon"

        android:layout_width="50dp"

        android:layout_height="50dp"

        android:padding="3dp"

        android:scaleType="centerCrop" />

   

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:gravity="center_vertical"

        android:orientation="vertical"

        android:paddingLeft="5dp" >

       

            android:id="@+id/app_name"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:gravity="center_vertical"

            android:textStyle="bold" />

       

            android:id="@+id/app_paackage"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:gravity="center_vertical" />

   

[/shcode]

در فایل MainActivity.java کد زیر را قرار دهید.

[shcode=java]package com.example.getlistinstalledapp;

import java.util.ArrayList;

import java.util.List;

import android.app.ListActivity;

import android.app.ProgressDialog;

import android.content.ActivityNotFoundException;

import android.content.Intent;

import android.content.pm.ApplicationInfo;

import android.content.pm.PackageManager;

import android.os.AsyncTask;

import android.os.Bundle;

import android.view.View;

import android.widget.ListView;

import android.widget.Toast;

public class MainActivity extends ListActivity {

    private PackageManager packageManager = null;

    private List applist = null;

    private ApplicationAdapter listadaptor = null;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        packageManager = getPackageManager();

        new LoadApplications().execute();

    }

   

    @Override

    protected void onListItemClick(ListView l, View v, int position, long id) {

        super.onListItemClick(l, v, position, id);

        ApplicationInfo app = applist.get(position);

        try {

            Intent intent = packageManager

                    .getLaunchIntentForPackage(app.packageName);

            if (null != intent) {

                startActivity(intent);

            }

        } catch (ActivityNotFoundException e) {

            Toast.makeText(MainActivity.this, e.getMessage(),

                    Toast.LENGTH_LONG).show();

        } catch (Exception e) {

            Toast.makeText(MainActivity.this, e.getMessage(),

                    Toast.LENGTH_LONG).show();

        }

    }

    private List checkForLaunchIntent(List list) {

        ArrayList applist = new ArrayList();

        for (ApplicationInfo info : list) {

            try {

                if (null != packageManager.getLaunchIntentForPackage(info.packageName)) {

                    applist.add(info);

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

        return applist;

    }

    private class LoadApplications extends AsyncTask {

        private ProgressDialog progress = null;

        @Override

        protected Void doInBackground(Void... params) {

            applist = checkForLaunchIntent(packageManager.getInstalledApplications(PackageManager.GET_META_DATA));

            listadaptor = new ApplicationAdapter(MainActivity.this,

                    R.layout.snippet_list_row, applist);

            return null;

        }

        @Override

        protected void onCancelled() {

            super.onCancelled();

        }

        @Override

        protected void onPostExecute(Void result) {

            setListAdapter(listadaptor);

            progress.dismiss();

            super.onPostExecute(result);

        }

        @Override

        protected void onPreExecute() {

            progress = ProgressDialog.show(MainActivity.this, null,

                    "Loading application info...");

            super.onPreExecute();

        }

        @Override

        protected void onProgressUpdate(Void... values) {

            super.onProgressUpdate(values);

        }

    }

}[/shcode]

فایل جاوای دیگری به اسم ApplicationAdapter.java ایجاد کنید و کد زیر را در آن قرار دهید.

[shcode=java]package com.example.getlistinstalledapp;

import java.util.List;

import android.content.Context;

import android.content.pm.ApplicationInfo;

import android.content.pm.PackageManager;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.ImageView;

import android.widget.TextView;

public class ApplicationAdapter extends ArrayAdapter {

    private List appsList = null;

    private Context context;

    private PackageManager packageManager;

    public ApplicationAdapter(Context context, int textViewResourceId,

            List appsList) {

        super(context, textViewResourceId, appsList);

        this.context = context;

        this.appsList = appsList;

        packageManager = context.getPackageManager();

    }

    @Override

    public int getCount() {

        return ((null != appsList) ? appsList.size() : 0);

    }

    @Override

    public ApplicationInfo getItem(int position) {

        return ((null != appsList) ? appsList.get(position) : null);

    }

    @Override

    public long getItemId(int position) {

        return position;

    }

    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        View view = convertView;

        if (null == view) {

            LayoutInflater layoutInflater = (LayoutInflater) context

                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            view = layoutInflater.inflate(R.layout.snippet_list_row, null);

        }

        ApplicationInfo applicationInfo = appsList.get(position);

        if (null != applicationInfo) {

            TextView appName = (TextView) view.findViewById(R.id.app_name);

            TextView packageName = (TextView) view.findViewById(R.id.app_paackage);

            ImageView iconview = (ImageView) view.findViewById(R.id.app_icon);

            appName.setText(applicationInfo.loadLabel(packageManager));

            packageName.setText(applicationInfo.packageName);

            iconview.setImageDrawable(applicationInfo.loadIcon(packageManager));

        }

        return view;

    }

};[/shcode]

حالا برنامه را اجرا کنید. خروجی برنامه به صورت زیر می باشد.

do.php?img=618

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...