从手机中获得已安装的程序或指定程序,推送给好友!
package com.example.viper;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.SimpleAdapter.ViewBinder;
public class TuiJianActivity extends Activity implements OnClickListener{
private ListView listView;
private List<Map<String, Object>> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
//Log.v(TAG, "created");
super.onCreate(savedInstanceState);
setContentView(R.layout.viper_sz_list);
listView = (ListView) this.findViewById(R.id.SZ_listView);
list = new ArrayList<Map<String, Object>>();
List<PackageInfo> appListInfo = this.getPackageManager()
.getInstalledPackages(0);
for (PackageInfo p : appListInfo) {
// if (p.applicationInfo.sourceDir.startsWith("/system/viper/")) {
// continue;
// }
Map<String, Object> map = new HashMap<String, Object>();
Drawable icon = null;
String appName = "";
try {
appName = this.getPackageManager()
.getApplicationLabel(p.applicationInfo).toString();
icon = this.getPackageManager().getApplicationIcon(
p.applicationInfo.packageName);
} catch (Exception e) {
e.printStackTrace();
}
if (appName.equals("Viper")) {//我的程序名称
map.put("name", appName);
map.put("package", p.applicationInfo.packageName);
map.put("sourceDir", p.applicationInfo.sourceDir);
map.put("icon", icon);
list.add(map);
}
}
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.viper_sz_pic,
new String[] { "name", "icon" }, new int[] { R.id.sz_name,
R.id.sz_icon });
adapter.setViewBinder(new ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
// 判断是否为我们要处理的对象
if (view instanceof ImageView && data instanceof Drawable) {
ImageView iv = (ImageView) view;
iv.setImageDrawable((Drawable) data);
return true;
} else
return false;
}
});
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (list.get(position).get("sourceDir") != null) {
File f = new File(list.get(position).get("sourceDir")
.toString());
// 调用android分享窗口
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
startActivity(intent);
}
}
});
}
@Override
protected void onDestroy() {
//Log.v(TAG, "destroy");
super.onDestroy();
}
@Override
public void onClick(View v) {
}
}
//********************************************************************************************************************以下是转载内容
有时候我们会查询手机里面是否安装了某个程序,或者获取已经安装软件名称的集合。
android这边提供了相应的接口。
- final PackageManager packageManager = getActivity().getPackageManager();//获取packagemanager
- List< PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息
- if(pinfo != null){
- for(int i = 0; i < pinfo.size(); i++){
- String packName = pinfo.get(i).packageName;
- Log.d("info", "-->"+packName);
- }
- }
上面的例子可以打印出安装软件的包名。每个程序的包名在android手机里都是唯一的。
判断手机是否安装了某个程序,如果安装了此程序,删除它。
- private void uninstallSoftware(Context context, String name) {
- final PackageManager packageManager = context.getPackageManager();
- try {
- PackageInfo pInfo = packageManager.getPackageInfo(name,
- PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
- if(pInfo!=null){
- //删除软件
- Uri uri = Uri.parse("package:"+ name);
- Intent intent = new Intent(Intent.ACTION_DELETE, uri);
- context.startActivity(intent);
- }
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- }
- private void isInstallOnSd(Context context,String name){
- PackageManager pm=context.getPackageManager();
- ApplicationInfo appInfo;
- try {
- appInfo = pm.getApplicationInfo(name, 0);
- if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
- // App on sdcard
- Log.d("info", "app on sd");
- }
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- }
- }