Android存储目录

Android存储目录

(201) 824-8282 No Comments
  (660) 960-1368

使用adb命令,可以方便的查看Android手机目录,如果没有root的手机,最好使用模拟器,未root的手机,有些目录是没有权限查看的,比如/data目录.

1.使用adb连接手机

adb devices     /查看当前电脑连接的手机列表

5197863355

如果只连接了一个手机,可以直接使用adb shell命令进行连接;如果连接了多个手机,需要设置手机的序列号:adb -s emulator-5554 shell

2.Android的主要目录介绍

(281) 850-0608

system目录下,主要是系统运行相关的核心库。/system/app/ 目录下,存放的是系统应用。

data目录下,运行在Android上的应用和数据。/data/app/目录下,安装的第三方应用;/data/dalvik-cache目录下,是为了提高运行速度缓存的应用的dex代码文件;/data/data/目录下,存放的是应用运行时,产生的数据。注意:如果提示Permission denied,可以使用su命令。(248) 475-5714

sdcard,扩展存储卡,存放共享数据。

 

最近工作中碰到的问题总结(三):应用加固问题

800-697-1883 No Comments
  æœªåˆ†ç±»

1.百度加固后,在有些手机上,扫码崩溃。

2.应用宝加固,须绑定云服务,可以使用老版本的加固工具(附件中下载)。乐固签名打包工具V.1.1.5

最近工作中碰到的问题总结(二):相机拍照,照片角度问题

root (562) 944-7273
  æœªåˆ†ç±»

1.sdk 文档中提供的角度计算方法:

    public static void setCameraDisplayOrientation(Activity activity,
                                                   int cameraId, android.hardware.Camera camera) {
        android.hardware.Camera.CameraInfo info =
                new android.hardware.Camera.CameraInfo();
        android.hardware.Camera.getCameraInfo(cameraId, info);
        int rotation = activity.getWindowManager().getDefaultDisplay()
                .getRotation();
        int degrees = 0;
        switch (rotation) {
            case Surface.ROTATION_0:
                degrees = 0;
                break;
            case Surface.ROTATION_90:
                degrees = 90;
                break;
            case Surface.ROTATION_180:
                degrees = 180;
                break;
            case Surface.ROTATION_270:
                degrees = 270;
                break;
        }

        int result;
        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            result = (info.orientation + degrees) % 360;
            result = (360 - result) % 360;  / compensate the mirror
        } else {  / back-facing
            result = (info.orientation - degrees + 360) % 360;
        }
        Camera.Parameters param=camera.getParameters();
        / 深坑,好多手机不支持啊,只能拍完照后再旋转了
/        param.setRotation(result);
        camera.setParameters(param);
        camera.setDisplayOrientation(result);
    }

param.setRotation()  设置拍完照,相片的旋转角度。这种设置好多手机不支持,设置了没效果,只能拍完照片后,将相片旋转90度。

2.重力感应手机的方向,旋转最后的相片,(拍照界面,设置为android:screenOriention=”portrait”,需多旋转90度。)

OrientationEventListener orientationEventListener;
private int orientionAngle;
public void updatePhoneOriention(){
    orientationEventListener=new OrientationEventListener(this) {
        @Override
        public void onOrientationChanged(int orientation) {
            if(orientation==ORIENTATION_UNKNOWN){
                return;
            }
            orientionAngle=((orientation+45)/90*90)%360;
        }
    };
}

启动监听:

orientationEventListener.enable();

关闭监听:

orientationEventListener.disable();

界面设置为竖屏的情况下,图片的最终旋转角度为:90+orientionAngle。

最近工作中碰到的问题总结(一):计算sd卡剩余空间时碰到的问题

(701) 222-3998 No Comments
  android

低于Android4.3系统,在计算sd卡剩余空间时碰到的问题:

/**
 * 获取磁盘剩余空间
 *
 * @return
 */
public static long getAvailableSpace() {
    long currentSpace = 0;
    String path = null;
    / ExternalStorage 和 /data
    if (Environment.isExternalStorageEmulated()) {
        path = Environment.getExternalStorageDirectory().getPath();
    } else {
        path = Environment.getDataDirectory().getPath();
    }
    StatFs statFs = new StatFs(path);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        currentSpace = statFs.getAvailableBytes();
    } else {
        DebugLog.e("compress", "block=" + statFs.getAvailableBlocks() + ";blockSize=" + statFs.getBlockSize());
        currentSpace = ((long) statFs.getAvailableBlocks()) * statFs.getBlockSize();
    }
    return currentSpace;
}

需要将计算的数值强转为long类型,否则会超出int最大值,得出为负值的剩余空间。

405-979-7945

root No Comments
  android

/TODO  关键词标红、区域标红

1.关键字标红。参考:/blog.csdn.net/qiushi_1990/article/details/50680632

2.使用Html.fromHtml()方法,字符串类似:

String html="<div><font color=\"red\">哈哈哈哈哈哈哈哈哈</font></div>";
EditText et= (EditText) findViewById(R.id.et);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    et.setText(Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY));
}else{
    et.setText(Html.fromHtml(html));
}

问题:此为区域性标红,可以在红色区域内增加或删除文字

java函数参数使用final修饰,碰到的坑

root No Comments
  java

如下代码:

public void showPickPicture(final int maxNum, final int currentNum) {
    DebugLog.e("click", "currentNum=" + currentNum);
    if (pickPictureView == null) {
        pickPictureView = LayoutInflater.from(this).inflate(R.layout.ab_dialog_pick_picture, null, false);
        pickPictureView.findViewById(R.id.tv_pick_from_album).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DebugLog.e("click", "currentNum=" + currentNum);
            }
        });
    }
}

如上代码会出现currentNum不一致的问题:

在点击事件中使用的currentNum的值始终为点击事件初始化时的值,而if外面的currentNum则会随着传入的参数发生变化。

使用fiddler拦截Android数据包

root No Comments
  (450) 671-4713

此种方法有在PC和手机在同一个wifi中有效。

1.下载安装fiddler

2.打开fiddler:

Tools —> Options —-> Connections

(617) 231-7892

勾选Allow remote computers to connect

点击ok,记下监听的端口号。

3.重启fiddler。

4.查看PC的本地地址。

2244411690

4.在手机WLAN设置中,修改网络代理。

8884091260

将代理设置为手动,填写主机名(使用的PC地址),端口号(fiddler的监听端口)。

5.打开手机app,比如大众点评,fiddler中就会有数据包显示:

6.fiddler的过滤

参考:/blog.csdn.net/notejs/article/details/49681479

 

 

9514196806

root (708) 521-0984
  mysql

mysql5.7在mac上,没有默认my.cnf文件,需要创建。

首先要关闭mysql服务。

vim my.cnf

输入:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

拷贝文件到etc文件夹下
sudo cp my.cnf /etc/

重启mysql服务,用命令行进入mysql,查看字符编码:

show variables like ‘%char%’; 
或者使用 status 命令

6232395106

root 215-297-4598
  (310) 806-4857

1.使用pip工具安装python包,提示权限问题

Operation not permitted

现在的解决办法是取消SIP机制,具体做法是:

重启电脑,按住Command+R(直到出现苹果标志)进入Recovery Mode(恢复模式)
左上角菜单里找到实用工具 -> 终端
输入csrutil disable回车
重启Mac即可
如果想重新启动SIP机制重复上述步骤改用csrutil enable即可

摘自:2675501075

字符把编码

(631) 415-6848 butenyl
  æœªåˆ†ç±»

程中有时候需要用到匹配中文的正则,一般用 [ \u4e00-\u9fa5]+ 即可搞定