android 軟件卸載 代碼

package scl.uninstallapp;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private ArrayList<AppInfo> list;
	private ListView listView;
	protected AdapterApp adapterApp;
	
	@Override
	protected void onRestart() {
		System.out.println("onRestart");
		adapterApp.notifyDataSetChanged();
		super.onRestart();
	}
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        list = getListApp();//獲取非系統安裝的軟件信息
        listView = (ListView) findViewById(R.id.listView1);
        adapterApp = new AdapterApp(MainActivity.this,list);
        listView.setDividerHeight(2);
       
        if(list !=null)
        {
        	listView.setOnItemClickListener(new OnItemClickListener() {

				public void onItemClick(AdapterView<?> parent, View view,
						int position, long id) {
					AppInfo app=list.get(position);
//					System.out.println(app.getAppName()+"--"+app.getPackageName()+"--"+app.getVersionName()+"--"+app.getVersionCode());
					String message = app.getAppName()+","+app.getPackageName()+","+app.getVersionName()+","+app.getVersionCode();
					new AlertDialog.Builder(MainActivity.this).setTitle("軟件信息")
					.setMessage(message)
					.setPositiveButton("OK", null).create().show();
				}
			});
        	
        	listView.setAdapter(adapterApp);
        }
    }

	private ArrayList<AppInfo> getListApp() {
		ArrayList<AppInfo> arrayList = new ArrayList<AppInfo>();
		List<PackageInfo> listPackages = getPackageManager()
				.getInstalledPackages(0);
		for (PackageInfo packageInfo : listPackages) {
//			System.out.println(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString()
//					+" / "+packageInfo.applicationInfo.flags
//					+" / "+ApplicationInfo.FLAG_SYSTEM);
//			System.out.println((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM));
			
			if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {

				AppInfo appInfo = new AppInfo(packageInfo.applicationInfo
						.loadLabel(getPackageManager()).toString(),
						packageInfo.packageName, packageInfo.versionName,
						packageInfo.versionCode,
						packageInfo.applicationInfo
								.loadIcon(getPackageManager()));

				arrayList.add(appInfo);
			}
		}
		return arrayList;
	}

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

class AdapterApp extends BaseAdapter{
	private LayoutInflater mlayoutInflater;
	private List<AppInfo> list;
	private Context context;
	public AdapterApp(Context context, ArrayList<AppInfo> list) {
		mlayoutInflater = LayoutInflater.from(context);
		this.list = list;
		this.context = context;
	}

	public int getCount() {
		return list.size();
	}

	public Object getItem(int position) {
		return list.get(position);
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		
		ViewHolder holder = null;
		final AppInfo appUnit=list.get(position);
		if(convertView == null || convertView.getTag() == null){
			convertView = mlayoutInflater.inflate(R.layout.list_item01, null);
			holder = new ViewHolder(convertView);
			convertView.setTag(holder);
		}else{
			holder = (ViewHolder) convertView.getTag();
		}
		holder.appIcon.setImageDrawable(appUnit.getAppIcon());
		holder.appName.setText(appUnit.getAppName());
//		System.out.println("------"+appUnit.getPackageName());
		holder.btnUninstall.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
//				System.out.println("package:"+appUnit.getPackageName());
				Uri packeageUri = Uri.parse("package:"+appUnit.getPackageName());
				Intent intent = new Intent(Intent.ACTION_DEFAULT, packeageUri);
				context.startActivity(intent);
				
				list.remove(appUnit);
				
			}
			
		});
		return convertView;
	}
	private class ViewHolder{
		ImageView appIcon;
		TextView appName;
		Button btnUninstall;

		public ViewHolder(View view) {
			this.appIcon = (ImageView) view.findViewById(R.id.app_icon);
			this.appName = (TextView) view.findViewById(R.id.app_name);
			this.btnUninstall = (Button) view.findViewById(R.id.btn_uninstall);
		}
	}
}

class AppInfo{
	private String appName;
	private String packageName;
	private String versionName;
	private int versionCode;
	private Drawable appIcon;
	
	public AppInfo() {
		super();
	}

	public AppInfo(String appName, String packageName, String versionName,
			int versionCode, Drawable appIcon) {
		super();
		this.appName = appName;
		this.packageName = packageName;
		this.versionName = versionName;
		this.versionCode = versionCode;
		this.appIcon = appIcon;
	}

	public String getAppName() {
		return appName;
	}

	public void setAppName(String appName) {
		this.appName = appName;
	}

	public String getPackageName() {
		return packageName;
	}

	public void setPackageName(String packageName) {
		this.packageName = packageName;
	}

	public String getVersionName() {
		return versionName;
	}

	public void setVersionName(String versionName) {
		this.versionName = versionName;
	}

	public int getVersionCode() {
		return versionCode;
	}

	public void setVersionCode(int versionCode) {
		this.versionCode = versionCode;
	}

	public Drawable getAppIcon() {
		return appIcon;
	}

	public void setAppIcon(Drawable appIcon) {
		this.appIcon = appIcon;
	}
	
}


activity_man.xml 加一個listview

<ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>


list_item01.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="blocksDescendants" >

    <Button
        android:id="@+id/btn_uninstall"
         android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:focusable="false"
        android:text="@string/btn_uninstall" />

<ImageView
    android:id="@+id/app_icon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignBottom="@+id/app_name"
    android:layout_alignParentLeft="true" />

    <TextView
        android:id="@+id/app_name"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/btn_uninstall"
        android:layout_toRightOf="@+id/app_icon" />

</RelativeLayout>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章