android 获取 第三方应用,​android PackageManager的使用如何获取第三方应用程序(包)的信息,求大神指点...

我只写出了系统的应用程序(包)的信息,第三方的没有出来,怎么办,求解

public class MainActivity extends Activity {

List appInfos;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListView listView = (ListView) findViewById(R.id.listView1);

appInfos = getData();

AppInfoAdapter aia = new AppInfoAdapter(this);

listView.setAdapter(aia);

}

public List getData() {

List listAppInfos = new ArrayList();

PackageManager pm = getPackageManager();

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

List resolveInfos = pm.queryIntentActivities(mainIntent,PackageManager.MATCH_DEFAULT_ONLY);

Collections.sort(resolveInfos,new ResolveInfo.DisplayNameComparator(pm));

if (listAppInfos != null) {

listAppInfos.clear();

for (ResolveInfo reInfo : resolveInfos) {

String activityName = reInfo.activityInfo.name;

String pkgName = reInfo.activityInfo.packageName;

String appLabel = (String) reInfo.loadLabel(pm);

Drawable icon = reInfo.loadIcon(pm);

Intent launchIntent = new Intent();

launchIntent.setComponent(new ComponentName(pkgName,activityName));

AppInfo appInfo = new AppInfo();

appInfo.setAppLabel(appLabel);

appInfo.setPkgName(pkgName);

appInfo.setAppIcon(icon);

listAppInfos.add(appInfo);

}

}

return listAppInfos;

}

static class ViewHoler {

ImageView imageView1;

TextView textView1;

TextView textView2;

}

class AppInfoAdapter extends BaseAdapter {

LayoutInflater miInflater;

public AppInfoAdapter(Context context) {

miInflater = LayoutInflater.from(MainActivity.this);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return appInfos.size();

}

@Override

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return appInfos.get(arg0);

}

@Override

public long getItemId(int arg0) {

// TODO Auto-generated method stub

return arg0;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

ViewHoler viewHoler;

if (arg1 == null) {

viewHoler = new ViewHoler();

arg1 = miInflater.inflate(R.layout.ietm, null);

viewHoler.textView1 = (TextView) arg1

.findViewById(R.id.textView1);

viewHoler.textView2 = (TextView) arg1

.findViewById(R.id.textView2);

viewHoler.imageView1 = (ImageView) arg1

.findViewById(R.id.imageView1);

arg1.setTag(viewHoler);

} else {

viewHoler = (ViewHoler) arg1.getTag();

}

viewHoler.textView1.setText(appInfos.get(arg0).getAppLabel());

viewHoler.textView2.setText(appInfos.get(arg0).getPkgName());

viewHoler.imageView1.setImageDrawable(appInfos.get(arg0)

.getAppIcon());

return arg1;

}

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is

// present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要禁止第三方应用程序的开机自启权限,可以使用以下代码: ```java PackageManager packageManager = context.getPackageManager(); ComponentName componentName = new ComponentName(context, SampleBootReceiver.class); int state = packageManager.getComponentEnabledSetting(componentName); if (state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } ``` 其中, `SampleBootReceiver` 是一个广播接收器,用来接收系统开机广播。这里我们通过 PackageManager 的 `getComponentEnabledSetting()` 方法来获取 `SampleBootReceiver` 的当前状态,如果是启用状态,就调用 `setComponentEnabledSetting()` 方法将其禁用。 需要注意的是,该功能需要应用程序具有系统级别的权限才能使用,所以必须在 AndroidManifest.xml 中声明相应的权限: ```xml <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" android:label="@string/permlab_changeComponentEnabledState" android:description="@string/permdesc_changeComponentEnabledState" android:protectionLevel="signature" /> ``` 声明完权限后,在代码中使用 `PackageManager.setComponentEnabledSetting()` 方法时,需要传入 `PackageManager.DONT_KILL_APP` 参数,以确保系统不会在应用程序被杀死时自动重新启用 `SampleBootReceiver`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值