AndroidStudio 中查看獲取MD5和SHA1值以及如何查看手機應用信息以及讀取*.db數據庫里面數據


查看獲取MD5和SHA1值具體操作方式鏈接

 

查看獲取MD5和SHA1值實際操作命令CMD語句:

C:\Users\Administrator>cd .android

C:\Users\Administrator\.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:\Users\Administrator\.android>

 

 

附加:

一個簡單高效的方法:在Android Studio工具中,在右側找到菜單欄“Gradle”—>”APP名”—>“Tasks”—>“android”—>雙擊“signReport”即可。這時在Terminal中可以查看debug版本、resalse版本的SHA1和MD5值。

 

查看手機應用信息:

D:\AndroidSDK\platform-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>  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM