当前位置:  编程技术>移动开发
本页文章导读:
    ▪有关问题小结(23)-获取所有应用的包名        问题小结(23)---获取所有应用的包名首先说一下在非编码情况下的方式,当然在该情况下一般都是我们想看下当前应用的包名都有哪些,此时并不是想做什么功能,仅仅是处于好奇心看看而.........
    ▪ opensips1.9装配        opensips1.9安装---------------------------------------------- 作者:         Amaryllis 时间:         2013-3-11 操作系统:  ubuntu-12.04-tls opensips:    Opensips-1.9.0-tls --------------------------------------------- 环境.........
    ▪ 调用pthread_mutex_destroy以后是否需要free       调用pthread_mutex_destroy之后是否需要free翻译自:http://stackoverflow.com/questions/6883032/do-i-need-to-use-delete-after-pthread-mutex-destroy 问: 假设我有以下代码来初始化互斥变量: pthread_mutex_t *m = new pthread_mu.........

[1]有关问题小结(23)-获取所有应用的包名
    来源: 互联网  发布时间: 2014-02-18
问题小结(23)---获取所有应用的包名

首先说一下在非编码情况下的方式,当然在该情况下一般都是我们想看下当前应用的包名都有哪些,此时并不是想做什么功能,仅仅是处于好奇心看看而已。

此时我们可以采用两种方式:1、进入通过cd命令进入data/data目录下,然后用ls命令查看。

C:\Users\Duke>adb shell
# cd data/data
cd data/data
# ls
ls

                                         

2、进入通过adb 连接上设备以后,通过如下命令查看

C:\Users\Duke>adb shell
# pm list packages
pm list packages
注意:通过这两种方式获取的结果略有不同,注意查看和对比。


然后,我们说一下代码的形式获取已安装应用的包名。

首先第一一个类,用于存储获取的信息

package com.example.apppackages;

import android.graphics.drawable.Drawable;

public class AppPackageInfo {

    public String appName="";
    public String packageName="";
    public String versionName="";
    public int versionCode=0;
    public Drawable appIcon=null;
    
}

然后就是功能代码:

   ArrayList<AppPackageInfo> appList = new ArrayList<AppPackageInfo>(); 
   List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
   
   for(int i=0;i<packages.size();i++) { 
   PackageInfo packageInfo = packages.get(i); 
   AppPackageInfo tmpInfo = new AppPackageInfo(); 
   tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString(); 
   tmpInfo.packageName = packageInfo.packageName; 
   tmpInfo.versionName = packageInfo.versionName; 
   tmpInfo.versionCode = packageInfo.versionCode; 
   tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager());
   appList.add(tmpInfo);
   Log.i("tag", tmpInfo.packageName);
   
  }
你可以根据自己的要求进行结果的展示或者做自己的功能,我这里只是在获取结果后打印了一下包名,没做任何展示的处理。



    
[2] opensips1.9装配
    来源: 互联网  发布时间: 2014-02-18
opensips1.9安装
----------------------------------------------
作者:         Amaryllis
时间:         2013-3-11
操作系统:  ubuntu-12.04-tls
opensips:    Opensips-1.9.0-tls
---------------------------------------------
环境安装总步骤:
一.操作系统安装(略)
二.opensips下载
    用svn down下代码 svn co https://opensips.svn.sourceforge.net/svnroot/opensips/branches/1.9 opensips_1_9
三.mysql安装
    见 http://blog.csdn.net/ximen1224/article/details/8457222
四.opensips安装
    提示: 1.安装时最好使用ROOT角色,因为需要用到sudo的地方比较多,很多命令都需要sudo。如果习惯在命令前添加sudo的开发者可以忽略此提示。
                2.上下按键:指针向上、向下;左右键:返回上层目录、进入下层目录,一直按左键可返回到命令输入界面,之后返回图形界面输入:fg;CTRL-Z:退出到命令界面
    1.进入opensips目录
        root@ubuntu:cd /home/amaryllis/work/project/opensips/
        root@ubuntu:make menuconfig
        输入上述命令进入选择框模式如图:
        
        如图:往下执行
        
        
        选择mysql数据库模块
        
    
        制定安装目录
        
        如上图:红色部分为指针选择,蓝色部分为指定程序安装目录
        提示:程序安装目录最好指定到公共文件目录中,据测试放到用户目录中,启动会出问题,个人出现过BUG,故作此提示
        
        配置完成之后需要对配置进行保存,如下图
        
        下面会提示“db_mysql”模块存在问题,表示您需要安装apt-get install libmysqlclient-dev

    安装完之后进入到图形界面进行安装,如下图
    

        安装界面如下:
        
        出现上图内容部分表示安装已经成功完成,可以进行下一步:配置。
        提示:如果出现下列内容则恭喜你,你中奖了:
            mysql/mysql.h:没有那个文件或目录。这时候就需要安装apt-get install libmysqlclient-dev来解决这个问题。
五:opensips文件配置:

        1.9相对于1.7及以下版本配置起来要麻烦一点,但是配置完给人的感觉还是比上述版本要安全、简介一点。
        1.修改配置文件opensipsctlrc
           root@ubuntu:gedit  /usr/local/opensips_proxy/etc/opensips/opensipsctlrc
           提示: 如果您对vim非常熟的话就用VIM吧。这个没有要求。本文修改配置文件采取gedit方式。
            修改内容如下:
                ## your SIP domain
                SIP_DOMAIN=192.168.99.103
                # this parameter.
                DBENGINE=MYSQL
                ## database host
                DBHOST=localhost
                ## database name (for ORACLE this is TNS name)
                DBNAME=opensips
                ## database read/write user
                DBRWUSER=opensips
                ## password for database read/write user
                DBRWPW="opensipsrw"
                ## database super user (for ORACLE this is 'scheme-creator' user)
                DBROOTUSER="root"
        2.安装数据库
             root@ubuntu:cd  /usr/local/opensips_proxy/sbin/
             root@ubuntu:./opensipsdbctl create
            接下来就是创建数据库如下图:
            
    3.检查M4是否安装
            apt-get install m4,如果没有安装,那么你懂的。。。
    4.生成opensips_residential_2013-3-10_22:52:46.cfg文件
            root@ubuntu:cd  /usr/local/opensips_proxy/sbin/
            root@ubuntu:./osipconfig
            输入上述命令进入图形界面,如下图:
            

            

            

            选中下列项,如图
            

            
            上图指针提示项为根据上述选择生成配置文件。

            接下来就是修改该文件了,如上图,根据下面的目录找到该文件:
             root@ubuntu:cd  /usr/local/opensips_proxy/etc/opensips/
             root@ubuntu:gedit opensips_residential_2013-3-10_22:52:46.cfg
            打开之后就开始修改属性了,需要修改的点如下图:
            
            修改TCP与UDP建立信令链接的地址,修改成你ubuntu所在机器上的IP地址,查看命令:ifconfig
            
            设置模块的位置,需要用绝对路径来指定,具体位置砍图片内容制动的路径。
            如果你需要打印日志到单独的文件中以方便管理的话,需要修改下列属性:
            log_facility = LOG_LOCAL0修改为 log_facility = LOG_LOCAL1
            然后
            root@ubuntu:gedit /etc/rsylog.conf
            在最后面添加代码local1.*   -/var/log/opensips.log
            最后重启日志
             root@ubuntu:/etc/init.d/rsyslog restart
            日志即配置完成。
            接下来回到原来的配置文件上来:
            #### URI module
            loadmodule "uri.so"
            modparam("uri", "use_uri_table", 0)
            modparam("uri", "db_url",
        "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME
            
            在此处添加红色代码部分,否则运行时会报错。
            到此该配置文件基本上告一段落了。
    
        5.设置启动项:
            root@ubuntu:cd  /home/amaryllis/work/project/opensips/packaging/debian
            root@ubuntu:cp opensips.init /etc/init.d/opensips
            root@ubuntu:chmod +x /etc/init.d/opensips
            root@ubuntu:gedit /etc/init.d/opensips
            打开最后修改配置文件如下图:
            

            
            红色部分为需要删除的部分

            
            "-f ..."为程序程序制定生成时候的配置文件,只有这里指定了,在启动时才能通过该路径去读取该配置文件。否则不读取该配置文件。
        6.设置默认项opensips.default
             root@ubuntu:cd  /home/amaryllis/work/project/opensips/packaging/debian  
             root@ubuntu:cp  opensips.default /etc/default/
             root@ubuntu:cd  /etc/default/
             root@ubuntu:mv  opensips.default opensips
             root@ubuntu:gedit opensips
            打开之后修改配置文件如下图:
            
六:启动opensips
            root@ubuntu:/etc/init.d/opensips restart(重启)
            或者
            root@ubuntu:/etc/init.d/opensips start(启动)
七:查看进程:
            root@ubuntu:ps aux | grep opensips
    
            结果如下图:
                
            查看UDP链接状态
                  
            查看TCP链接状态
                    
            如果出现结果和上述不一样,那么只能说你配置出问题了,需要仔细进行排查。
                 至此安装基本上告一段落了,剩下的就是需要你去测试看能否通过了。

    
[3] 调用pthread_mutex_destroy以后是否需要free
    来源: 互联网  发布时间: 2014-02-18
调用pthread_mutex_destroy之后是否需要free

翻译自:http://stackoverflow.com/questions/6883032/do-i-need-to-use-delete-after-pthread-mutex-destroy

问:

假设我有以下代码来初始化互斥变量:

pthread_mutex_t *m = new pthread_mutex_t;
pthread_mutex_init(m, NULL);
使用结束后调用:

pthread_mutex_destroy(m);

那么我是否需要调用 free(m)

答:

你需要释放内存,pthread_mutex_destroy并不能为你释放。

为什么呢?

因为下面的调用方法是被允许的:

pthread_mutex_t m;
pthread_mutex_init(&m, NULL);

pthread_mutex_destroy(&m); /* Can't free &m. 这里是引用*/
你可能传入一个指针,也可能传入引用,函数并不能区分,因此,如果你声明的是指针,则需要手动free

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3