安卓安装完应用后,获取包的meta-inf目录下的文件channel_ID.txt的第三行

背景:


安卓安装完应用后,可以获取包的meta-inf目录下的文件吗?

在手机上安装完了应用后,然后打开应用,此时,应用里的SDK有没有办法取到应用包里的meta-inf文件?

为什么要这么做?

因为同一个应用包,需要往里面打不同的渠道ID。 然后又要保持签名一致。

这个时候需要往meta-inf里面写文件,因为这样不会影响到签名。

但是问题来了,如果一两个渠道还好,可以手工把渠道ID打到SDK里就可以,但是一旦渠道太多,应用太多的话,不可能手工打进去的,

所以这个时候就要通过SDK动态去取渠道ID, 但是渠道ID怎么动态打到包里面去呢? 只能通过META-INF。

但是把渠道ID打到META-INF了, 不知道怎么通过SDK去取到这个ID啊。。。


所以求求大神们帮帮忙解决下小弟这个难题 啊



方案: 具体化一下,将问题变更为,获取包的meta-inf目录下的文件channel_ID.txt的第三行


public static void initChannelContent(Context context) {
		String cpaChannel = "";
		ApplicationInfo appinfo = context.getApplicationInfo();
		String sourceDir = appinfo.sourceDir;
		ZipFile zipfile = null;
		try {
			zipfile = new ZipFile(sourceDir);
			Enumeration<?> entries = zipfile.entries();
			while (entries.hasMoreElements()) {
				ZipEntry entry = ((ZipEntry) entries.nextElement());
				String entryName = entry.getName();
				if (entryName.contains("../")) {
					break;
				}
							
				//取META-INF/channel_ID.txt文件的第三行,作为CPA_Channel_ID的值
				if (entryName.startsWith("META-INF/channel_ID.txt")) { // xxx
					// 表示要读取的文件名
					// 利用ZipInputStream读取文件
					long size = entry.getSize();
					if (size > 0) {
						BufferedReader br = new BufferedReader(new InputStreamReader(zipfile.getInputStream(entry)));
						String line;
						int lines = 0;
						while ((line = br.readLine()) != null) { // 文件内容都在这里输出了,根据你的需要做改变
							// System.out.println(line);
							lines ++;
							if(lines == 3){
								AppConfig.CPA_Channel_ID = line.trim();
								break;
							}
							//cpaChannel += line;
						}

						br.close();
					}
					break;
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (zipfile != null) {
				try {
					zipfile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值