免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 详解如何制作APK安装器(4)

详解如何制作APK安装器(4)

时间:2012-04-14 19:31来源:未知 整理:寂涯网络 点击:


    m_Permission = "";
    return;
  } 
  posbegin = str.find(softName);
  if (posbegin == string::npos)
    m_softName = "";
  else
  {
    posbegin = posbegin + softName.size();
    posend = str.find('\'', posbegin);
    m_softName.assign(str, posbegin, posend-posbegin);  //获取APK 的软件
对外显示名称
  }
  posbegin = str.find(pkgName);
  if (posbegin == string::npos)
    m_PkgName = "";
  else
  {
    posbegin = posbegin + pkgName.size();
    posend = str.find('\'', posbegin);
    m_PkgName.assign(str, posbegin, posend-posbegin);  //获取 APK 的软件
包名称
  }
......
......
HANDLE hApk = CreateFile(m_apkName.c_str(), GENERIC_READ, 
            FILE_SHARE_READ,
  NULL, 
            OPEN_EXISTING, 
            FILE_ATTRIBUTE_NORMAL, 
            NULL );
  if(hApk == INVALID_HANDLE_VALUE)
m_FileSize = "";
  else
  {
    DWORD dwSize = GetFileSize(hApk, NULL);
    DOUBLE fSize = 0;
    string strend = "";
    if (dwSize >= 1024*1024)
    {
      fSize = dwSize * 1.0 / 1024 / 1024;
      strend = "MB";
    }
    else if (dwSize >= 1024)
    {
      fSize = dwSize * 1.0 / 1024;
      strend = "KB";
    }
    else
    {
      fSize = dwSize;
      strend = "字节";
    }
    char buf[16] = {0};   
    m_FileSize = _gcvt(fSize, 3, buf);
    m_FileSize += strend;
    CloseHandle(hApk);
  }
  posbegin = str.find(iconfile);
  if (posbegin == string::npos)
    m_OSVersion = "";
  else
{
    posbegin = posbegin + iconfile.size();
    posend = str.find('\'', posbegin);
    m_iconFile.assign(str, posbegin, posend-posbegin); 
  }
}
使用string类的find方法对特征字符串进行查找,特征字符串在上面讲解ADB与AAPT
时有用到,它们分别是:
const string errorstr = "ERROR: dump failed";
const string appName = "application: label='";
const string pkgName = "package: name='";
const string version = "versionName='";
const string osversion = "sdkVersion:'";
const string permission = "uses-permission:'";
const string iconfile = "icon='";
const string devices = "List of devices attached";
如果找到相应的特征字符串就提取相应的值并设置相应的成员变量,反之则设为空。权
限字符串的处理是比较麻烦的,查找permission 会返回一系列以 "uses-permission:'"打
头的字符串,而我们程序需要显示的是权限的描述,为此,我将这些权限与之对应的描述创
建到了一个STL的 Map 对象中,map<string,string> m_mapPermission,而初始化的操作封
装到了 InitPermissionMap()中,代码如下:
void CAPKHelper::InitPermissionMap()
{
  m_mapPermission.clear();
  m_mapPermission.insert(pair<string,string>("android.permission.ACCESS_COARS
E_LOCATION","允许获取粗略的位置信息"));
  m_mapPermission.insert(pair<string,string>("android.permission.ACCESS_FINE_
LOCATION","允许访问GPS"));
  ......
......
  m_mapPermission.insert(pair<string,string>("android.permission.ACCESS_MOCK_
LOCATION","获取模拟定位信息"));
  m_mapPermission.insert(pair<string,string>("android.permission.CHANGE_COMPO
NENT_ENABLED_STATE","改变组件启用状态"));

本页地址 http://www.jybase.net/biancheng/20120414825.html

百度搜索更多

谷歌搜索更多

顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com