Razieh Shahraki

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

1 ارسال در این موضوع قرار دارد

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

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

 در فایل 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

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری