• AndroidStudio 中查看获取MD5和SHA1值以及如何查看手机应用信息以及读取*.db数据库里面数据


    查看获取MD5和SHA1值具体操作方式链接

    查看获取MD5和SHA1值实际操作命令CMD语句:

    C:UsersAdministrator>cd .android
    
    C:UsersAdministrator.android>keytool -list -v -keystore debug.keystore
    输入密钥库口令:                (默认密码:android。此处输入android就可以)
    密钥库类型: JKS
    密钥库提供方: SUN
    
    您的密钥库包含 1 个条目
    
    别名: androiddebugkey
    创建日期: 2018-3-21
    条目类型: PrivateKeyEntry
    证书链长度: 1
    证书[1]:
    所有者: C=US, O=Android, CN=Android Debug
    发布者: C=US, O=Android, CN=Android Debug
    序列号: 1
    有效期为 Wed Mar 21 22:58:48 CST 2018 至 Fri Mar 13 22:58:48 CST 2048
    证书指纹:
             MD5:  ********6:D5:69:A0:51:53:41:61:76:35:2B
             SHA1: ************************************************   #####各自电脑的不同,此处已经被我注释
             SHA256: 79:12:C0:A********6E:46:B3:77:8A:DE:FF:ED:E7:EC:7A:6E:3E:7A:FC:F0:BE:0A:B5:E5:4B
    签名算法名称: SHA1withRSA
    主体公共密钥算法: 1024 位 RSA 密钥
    版本: 1
    
    
    *******************************************
    *******************************************
    
    
    
    Warning:
    JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
    
    C:UsersAdministrator.android>

    附加:

    一个简单高效的方法:在Android Studio工具中,在右侧找到菜单栏“Gradle”—>”APP名”—>“Tasks”—>“android”—>双击“signReport”即可。这时在Terminal中可以查看debug版本、resalse版本的SHA1和MD5值。

    查看手机应用信息:

    D:AndroidSDKplatform-tools>adb shell pm list package -f
    package:/system/priv-app/HwCamera/HwCamera.apk=com.huawei.camera
    package:/data/app/so.ofo.labofo-1/base.apk=so.ofo.labofo
    package:/data/app/com.liu.dance-1/base.apk=com.liu.dance
    package:/system/app/HwLauncher6/HwLauncher6.apk=com.huawei.android.launcher
    package:/data/app/com.android.mediacenter-2/base.apk=com.android.mediacenter
    package:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephony
    package:/system/app/HwInternetAudioService/HwInternetAudioService.apk=com.huawei.internetaudioservice
    package:/system/app/HwCallRecorder/HwCallRecorder.apk=com.android.phone.recorder
    package:/system/app/CalendarProvider/CalendarProvider.apk=com.android.providers.calendar
    package:/data/app/com.huawei.health-1/base.apk=com.huawei.health
    package:/data/app/com.huawei.hidisk-1/base.apk=com.huawei.hidisk
    package:/system/app/HwBluetoothImport/HwBluetoothImport.apk=com.huawei.bluetooth
    package:/system/priv-app/MediaProvider/MediaProvider.apk=com.android.providers.media
    package:/system/app/HwThemeManager/HwThemeManager.apk=com.huawei.android.thememanager
    package:/system/priv-app/HwChrService/HwChrService.apk=com.huawei.android.chr
    package:/system/app/HwAppObserver/HwAppObserver.apk=com.huawei.android.nff
    package:/data/app/com.qiyi.video-2/base.apk=com.qiyi.video
    package:/system/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk=com.google.android.onetimeinitializer
    package:/system/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropper
    package:/system/app/HwFloatTasks/HwFloatTasks.apk=com.huawei.android.FloatTasks
    package:/system/priv-app/HwIntelligent/HwIntelligent.apk=com.huawei.intelligent
    package:/system/priv-app/HwMotionRecognition/HwMotionRecognition.apk=com.huawei.motionservice
    package:/system/app/SmartcardService/SmartcardService.apk=org.simalliance.openmobileapi.service
    package:/data/app/com.huawei.appmarket-2/base.apk=com.huawei.appmarket
    package:/system/app/HwParentControl/HwParentControl.apk=com.huawei.parentcontrol
    package:/system/app/HwSecureIME/HwSecureIME.apk=com.huawei.secime

    读取*.db里面数据

    参考文章链接

    亲测可用(在此分享一个老黄历的SQLite的Huangli.db文件,文件里面包含1901~2100年的农历宜和忌信息,具体链接:https://pan.baidu.com/s/1s3I73KYX4LUy8ges4QCDPA 密码:nka0)

    具体内容如下:

    我们就是要在应用启动的时候读取assets目录下的数据库,然后把test.db写入SDcard的data/data/com.datab.cn路径下边。
    
    我们首先新建一个类:SQLdm.java:
    
    [java] view plain copy
    <span style="font-size:18px;">package com.datab.cn;  
      
    import java.io.File;  
    import java.io.FileOutputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
      
    import android.content.Context;  
    import android.content.res.AssetManager;  
    import android.database.sqlite.SQLiteDatabase;  
    import android.util.Log;  
      
    /** 
     * 这个类就是实现从assets目录读取数据库文件然后写入SDcard中,如果在SDcard中存在,就打开数据库,不存在就从assets目录下复制过去 
     * @author Big_Adamapple 
     * 
     */  
    public class SQLdm {    
            
        //数据库存储路径    
        String filePath = "data/data/com.datab.cn/test.db";    
        //数据库存放的文件夹 data/data/com.main.jh 下面    
        String pathStr = "data/data/com.datab.cn";    
            
        SQLiteDatabase database;     
        public  SQLiteDatabase openDatabase(Context context){    
            System.out.println("filePath:"+filePath);    
            File jhPath=new File(filePath);    
                //查看数据库文件是否存在    
                if(jhPath.exists()){    
                    Log.i("test", "存在数据库");  
                    //存在则直接返回打开的数据库    
                    return SQLiteDatabase.openOrCreateDatabase(jhPath, null);    
                }else{    
                    //不存在先创建文件夹    
                    File path=new File(pathStr);    
                    Log.i("test", "pathStr="+path);  
                    if (path.mkdir()){    
                        Log.i("test", "创建成功");   
                    }else{    
                        Log.i("test", "创建失败");  
                    };    
                    try {    
                        //得到资源    
                        AssetManager am= context.getAssets();    
                        //得到数据库的输入流    
                        InputStream is=am.open("test.db");    
                        Log.i("test", is+"");  
                        //用输出流写到SDcard上面      
                        FileOutputStream fos=new FileOutputStream(jhPath);    
                        Log.i("test", "fos="+fos);  
                        Log.i("test", "jhPath="+jhPath);  
                        //创建byte数组  用于1KB写一次    
                        byte[] buffer=new byte[1024];    
                        int count = 0;    
                        while((count = is.read(buffer))>0){    
                            Log.i("test", "得到");  
                            fos.write(buffer,0,count);    
                        }    
                        //最后关闭就可以了    
                        fos.flush();    
                        fos.close();    
                        is.close();    
                    } catch (IOException e) {    
                        // TODO Auto-generated catch block    
                        e.printStackTrace();    
                        return null;  
                    }    
                    //如果没有这个数据库  我们已经把他写到SD卡上了,然后在执行一次这个方法 就可以返回数据库了    
                    return openDatabase(context);    
                }    
        }    
    }  
    </span>  
    
    然后,我们在DatabActivity.java中获得数据库中的数据:
    [java] view plain copy
    <span style="font-size:18px;">package com.datab.cn;  
      
    import android.app.Activity;  
    import android.database.Cursor;  
    import android.database.sqlite.SQLiteDatabase;  
    import android.os.Bundle;  
    import android.widget.TextView;  
      
    public class DatabActivity extends Activity {  
        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
              
            //打开数据库输出流  
            SQLdm s = new SQLdm();  
            SQLiteDatabase db =s.openDatabase(getApplicationContext());   
              
            TextView textv = (TextView) findViewById(R.id.textv);  
            //查询数据库中testid=1的数据  
            Cursor cursor = db.rawQuery("select * from testbiao where testid=?", new String[]{"1"});   
            String name = null;  
            if(cursor.moveToFirst()){    
                name = cursor.getString(cursor.getColumnIndex("name"));  
            }    
            //这是一个TextView,把得到的数据库中的name显示出来.  
            textv.setText(name);  
            cursor.close();    
        }  
    }</span>  
  • 相关阅读:
    实战篇之实现 OutLook 中以 EDM 形式发送通知邮件
    ASP.NET MVC5 之路由器
    ASP.NET MVC5 之数据迁移
    说不出的烦
    ASP.NET MVC5 之 Log4Net 的学习和使用
    读取配置文件参数和文件路径
    序列化和反序列化示例
    面向对象之封装
    面向对象4之常用的乱七八糟
    面向对象三之继承和派生
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/8622092.html
Copyright © 2020-2023  润新知