• Android 编程下获得应用程序的签名


    源码及安装文件下载方式一:GetAppSignature.zip

    说明:应用程序的签名被封装在 packageInfo 中,所以我们要获得应用程序的签名就需要获得 PackageManager 来获得包含有签名信息的 packageInfo,再通过 packageInfo 获得 Signature 数组,循环遍历将签名进行拼接。

    代码运行效果:

    package cn.sunzn.getappsignature;
    
    import android.app.Activity;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.PackageManager.NameNotFoundException;
    import android.content.pm.Signature;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
       private EditText et_pkgname;
       private TextView tv_signature;
       private PackageManager manager;
       private PackageInfo packageInfo;
       private Signature[] signatures;
       private StringBuilder builder;
       private String signature;
    
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           et_pkgname = (EditText) findViewById(R.id.et_pkgname);
           tv_signature = (TextView) findViewById(R.id.tv_signature);
           manager = getPackageManager();
           builder = new StringBuilder();
       }
    
       public void getSignature(View view) {
           String pkgname = et_pkgname.getText().toString();
           boolean isEmpty = TextUtils.isEmpty(pkgname);
           if (isEmpty) {
               Toast.makeText(this, "应用程序的包名不能为空!", Toast.LENGTH_SHORT);
           } else {
               try {
                   /** 通过包管理器获得指定包名包含签名的包信息 **/
                   packageInfo = manager.getPackageInfo(pkgname, PackageManager.GET_SIGNATURES);
                   /******* 通过返回的包信息获得签名数组 *******/
                   signatures = packageInfo.signatures;
                   /******* 循环遍历签名数组拼接应用签名 *******/
                   for (Signature signature : signatures) {
                       builder.append(signature.toCharsString());
                   }
                   /************** 得到应用签名 **************/
                   signature = builder.toString();
                   tv_signature.setText(signature);
               } catch (NameNotFoundException e) {
                   e.printStackTrace();
               }
           }
       }
    
       public boolean onCreateOptionsMenu(Menu menu) {
           getMenuInflater().inflate(R.menu.activity_main, menu);
           return true;
       }
    }
  • 相关阅读:
    oracle全文检索笔记
    java命令行运行带外部jar
    xstream对象xml互转
    spring postconstruct
    eclipse tomcat内存设置
    tomcat PermGen space
    springmvc+mybatis如何分层
    maven+springmvc+easyui+fastjson+pagehelper
    eclipse优化配置
    CodeSmith生成Entity时SourceTable.Description换行不注释
  • 原文地址:https://www.cnblogs.com/sunzn/p/2878422.html
Copyright © 2020-2023  润新知