zoukankan      html  css  js  c++  java
  • 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;
       }
    }
  • 相关阅读:
    angular2怎么使用第三方的库(jquery等)
    线性代数:方程组的几何解释
    2016新的计划
    ES+Hbase对接方案概述
    sparkR操作HDFS上面的CSV文件
    spark1.6配置sparksql 的元数据存储到postgresql中
    spark读写Sequoiadb
    Spring Boot与Docker部署
    Docker中使用Tomcat并部署war工程
    CentOS7安装使用Docker
  • 原文地址:https://www.cnblogs.com/sunzn/p/2878422.html
Copyright © 2011-2022 走看看