android 在程序内如何得到/data目录的权限呢?

慵懒的黑喵 2010-10-28 06:27:10
想写一个软件卸载程序,现在的情况是可以得到已经安装的应用的列表,但是却没有办法过滤掉系统自己的,在网上搜罗一大圈,都说第三方应用得不到root权限,可是这样的应用已经存在,也就是说还是有办法过滤掉系统自己的和厂商定制的,而只显示用户安装的应用.那么这个该如何实现呢?
网上有个传说利用遍历data/app文件夹(read),判定文件是否存在来解决,但是经过我的实验,传说也就是一个传说而已
下面是传说的代码:

PackageManager pckMan = getPackageManager();
List<PackageInfo> packs = pckMan.getInstalledPackages(0);
count = packs.size();
String name;
int installedNum = 0;
for(int i = 0; i < count; i++) {
PackageInfo p = packs.get(i);
if (p.versionName == null)
continue;


各位有什么好的方案可提供没有啊.....

...全文
2292 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aSysBang 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jparadox 的回复:]
问题解决了,呵呵,谢谢drsmart了,费了半天时间吧sourceDir这个字段找到了,问题迎刃而解
[/Quote]

这个字段 和 判断是否是系统的app有什么联系吗?
一个flag就够了,你不会是通过路径来判断是否是系统的app吧。。。
慵懒的黑喵 2010-10-29
  • 打赏
  • 举报
回复 1
顺便把代码也贴出来好了,对跟我有一样需求的新人朋友也许能用到


super.onCreate(savedInstanceState);
setContentView(R.layout.main);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
PackageManager packMan = this.getPackageManager();
List<PackageInfo> pack = packMan.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

for (int i = 0; i < pack.size(); i++) {
PackageInfo p = pack.get(i);
String s = p.applicationInfo.sourceDir;
Log.v(tag, p.applicationInfo.sourceDir);
if (s.substring(0, 10).equals("/data/app/")) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", p.applicationInfo.loadLabel(packMan));
list.add(map);
}
}

SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.list, new String[] { "name" },
new int[] { R.id.TextView01 });
ListView lv = (ListView) findViewById(R.id.ListView01);
lv.setAdapter(listAdapter);
慵懒的黑喵 2010-10-29
  • 打赏
  • 举报
回复
问题解决了,呵呵,谢谢drsmart了,费了半天时间吧sourceDir这个字段找到了,问题迎刃而解
慵懒的黑喵 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 drsmart 的回复:]

晕,楼上方法对的,就算那样,你也是应该用你的api,然后获取文件路径,直接判断就行,应该是sourcedir这个字段
[/Quote]

没明白,能再详细一点么,刚接触android,很多东西都还不清楚...
慵懒的黑喵 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 l417584711 的回复:]

引用 4 楼 jparadox 的回复:
问题解决了,呵呵,谢谢drsmart了,费了半天时间吧sourceDir这个字段找到了,问题迎刃而解


这个字段 和 判断是否是系统的app有什么联系吗?
一个flag就够了,你不会是通过路径来判断是否是系统的app吧。。。
[/Quote]
那个flag我设置了,可是最后还是取出来了所有的程序,过滤没有效果啊~~~
DrSmart 2010-10-28
  • 打赏
  • 举报
回复
晕,楼上方法对的,就算那样,你也是应该用你的api,然后获取文件路径,直接判断就行,应该是sourcedir这个字段
aSysBang 2010-10-28
  • 打赏
  • 举报
回复
app的flag和 系统的flag “与“ 操作就能判断是不是系统的了



80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧