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

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

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

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


}
这样访问权限描述就很简单了,代码如下:
  string strTmp = "";
  string strInfo = "";
  posbegin = 0;
  while((posbegin = str.find(permission, posbegin)) != string::npos)
  {
    posbegin = posbegin + permission.size();
    posend = str.find('\'', posbegin);
    strTmp.assign(str, posbegin, posend-posbegin);  //获取APk使用到的权限
    strInfo = m_mapPermission[strTmp];
    if(!strInfo.empty())
      m_Permission = m_Permission + strInfo + '\n';  
    posbegin = posend; //下一个
  }
这个CAPKHeaper类就讲到这里,大家可以在代码中查看类关系图更详细了解它的流程,
我们接下来看看主程序的逻辑,先看看程序设计的界面,如图8 所示:
图10
程序的编写基于MFC的对话框,我们看看安装按钮的响应:
void CAPKInstallerDlg::OnBnClickedInstall()
{
  if(!m_helper->GetDevices())
  {
    m_syslnkShow.SetWindowText(" 手机未连接或手机驱动没有安装好 ,<a
href=“http://www.jybase.net/”>点击此处</a>下载驱动");
    return;
  }
  if(m_apkPath.empty())
    OpenAPK();
  if(m_apkPath.empty()) return;
  m_threadType = THREADF_INSTALL;
  unsigned int dwThreadID = 0;
  HANDLE h = (HANDLE)_beginthreadex(NULL, 0, 
    ThreadProc, (LPVOID)this, 0, &dwThreadID);
}
线程的创建使用了 WIN32 的_beginthreadex(),所有对 APK 的操作都封装进这个
ThreadProc()线程中,代码如下:
unsigned __stdcall CAPKInstallerDlg::ThreadProc( LPVOID lpParam )
{
  EnterCriticalSection(&g_cs);
  CAPKInstallerDlg * pWnd = (CAPKInstallerDlg *)lpParam;
  switch (pWnd->m_threadType)
  {
  case THREADF_DEVICES:
    pWnd->m_syslnkShow.SetWindowText("正在检查已连接的手机");
    if(pWnd->m_helper->GetDevices())
    {
      pWnd->m_syslnkShow.SetWindowText("手机连接良好");
 
    }
    else
    {
      pWnd->m_syslnkShow.SetWindowText("手机未连接或手机驱动没有安装好,<a
href=\http://www.jybase.net>点击此处</a>下载驱动");
    }
    break;
  case THREADF_INSTALL:
    pWnd->m_btnUninstall.EnableWindow(FALSE);
    pWnd->m_syslnkShow.SetWindowText("正在安装软件..."); 
 
 
61
    pWnd->m_helper->Install(pWnd->m_cbPath.GetCurSel());
    pWnd->m_syslnkShow.SetWindowText("软件安装完成");
    pWnd->m_btnUninstall.EnableWindow(TRUE);
    break;
  case THREADF_UNINSTALL:
    pWnd->m_btnInstall.EnableWindow(FALSE);
    pWnd->m_syslnkShow.SetWindowText("正在卸载软件...");
    if(pWnd->m_helper->UnInstall())
    {
      pWnd->m_syslnkShow.SetWindowText("软件卸载完成");
    }
    else
    {
      pWnd->m_syslnkShow.SetWindowText("软件卸载失败");
    }
    pWnd->m_btnInstall.EnableWindow(TRUE);
    break;
  }
  LeaveCriticalSection(&g_cs);
  return 1;
}
各种操作信息的显示我使用了 syslink 控件,使用它的一个好处就是这个控件支持如
html的链接一样的显示效果,它们的鼠标点击处理代码统一如下:
void CAPKInstallerDlg::OnNMClickLinkurl(NMHDR *pNMHDR, LRESULT *pResult)
{
  PNMLINK pNMLink = (PNMLINK)pNMHDR;
  wstring wstr = pNMLink->item.szUrl; 
  string str = wstring2string(wstr);
  ::ShellExecute(m_hWnd, "open", str.c_str(), NULL, NULL, SW_SHOWNORMAL);
  *pResult = 0;
}
注意这行:wstring wstr = pNMLink->item.szUrl,syslink 点击消息返回的链接地址

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

百度搜索更多

谷歌搜索更多

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

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


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

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