php获取apk,php获取apk包信息的方法,php获取apk包

本文介绍如何使用PHP获取安卓apk包内的信息,包括应用名称、包名、版本名称和版本代码。通过Apkparser类,可以解析apk文件获取到相关元数据。示例代码展示了获取方法。
摘要由CSDN通过智能技术生成

php获取apk包信息的方法,php获取apk包

有时候在使用php上传安卓apk包的时候,我们需要获取安卓apk包内的信息,本文以实例形式讲述了php获取apk包信息的方法。具体实现方法如下:

open($targetFile);

$appObj->getAppName(); // 应用名称

$appObj->getPackage(); // 应用包名

$appObj->getVersionName(); // 版本名称

$appObj->getVersionCode(); // 版本代码

?>

以下是Apkparser类包,把以下代码复制出来保存为Apkparser.php就可以执行以上代码

open($apk_file) === TRUE) {

$xml = $zip->getFromName($xml_file);

$zip->close();

if ($xml){

try {

return $this->parseString($xml);

}catch (Exception $e){

}

}

}

return false;

}

public function parseString($xml){

$this->xml = $xml;

$this->length = strlen($xml);

$this->root = $this->parseBlock(self::AXML_FILE);

return true;

}

public function getXML($node=NULL, $lv=-1){

if ($lv == -1) $node = $this->root;

if (!$node) return '';

if ($node['type'] == self::END_TAG) $lv--;

$xml = @($node['line'] == 0 || $node['line'] == $this->line) ? '' : "\n".str_repeat(' ', $lv);

$xml .= $node['tag'];

$this->line = @$node['line'];

foreach ($node['child'] as $c){

$xml .= $this->getXML($c, $lv+1);

}

return $xml;

}

public function getPackage(){

return $this->getAttribute('manifest', 'package');

}

public function getVersionName(){

return $this->getAttribute('manifest', 'android:versionName');

}

public function getVersionCode(){

return $this->getAttribute('manifest', 'android:versionCode');

}

public function getAppName(){

return $this->getAttribute('manifest/application', 'android:name');

}

public function getMainActivity(){

for ($id=0; true; $id++){

$act = $this->getAttribute("manifest/application/activity[{$id}]/intent-filter/action", 'android:name');

if (!$act) break;

if ($act == 'android.intent.action.MAIN') return $this->getActivity($id);

}

return NULL;

}

public function getActivity($idx=0){

$idx = intval($idx);

return $this->getAttribute("manifest/application/activity[{$idx}]", 'android:name');

}

public function getAttribute($path, $name){

$r = $this->getElement($path);

if (is_null($r)) return NULL;

if (isset($r['attrs'])){

foreach ($r['attrs'] as $a){

if ($a['ns_name'] == $name) return $this->getAttributeValue($a);

}

}

return NULL;

}

//----------------------

// 类型常量定义

//----------------------

const AXML_FILE = 0x00080003;

const STRING_BLOCK = 0x001C0001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值