zoukankan      html  css  js  c++  java
  • AndroidManifest修改重打包全过程

    AndroidManifest修改重打包全过程:

    作者: 蔡建良 2013-06-26

    准备工具:
    apktool.jar和signapk.jar

    下载:

    http://download.csdn.net/detail/janehlp/5651605

    1)采用apktool命令行反编译apk资源文件。
    >apktool d c:GPS.Test.Plus_1.2.4.apk D:Javaandroid_apkcrackedGPS.Test.Plus_1.2.4

    2)修改androidAndroidManifest.xml文件,修改主程序activity配置。
    添加两处:
    android:exported="true"

     <intent-filter>
          <action android:name="com.eclipsim.gpsstatus.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>


    完整配置如下:
    <activity android:label="@string/app_label" android:icon="@drawable/icon" android:name="GPSStatus" android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
                <intent-filter>
                    <action android:name="com.eclipsim.gpsstatus.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
    </activity>

    被调用的包名为: com.eclipsim.gpsstatus。
    被调用的Action名为: com.eclipsim.gpsstatus.VIEW。


    3)采用apktool命令行将修改后资源打包成apk。
    >apktool b D:Javaandroid_apkcrackedGPS.Test.Plus_1.2.4 mynew.apk


    4)采用signapk对apk进行签名。
    >java -jar signapk.jar testkey.x509.pem testkey.pk8 mynew.apk mynew2.apk


    最后,mynew2.apk为最终安装包文件,安装后就能被其它程序调用。

    5) android程序调用代码。
    String gpsStatusAction = "com.chartcross.gpstestplus.VIEW";
    String gpsStatusPackage = "com.chartcross.gpstestplus";


    boolean hasGpsStatus = false;
    List<PackageInfo> installedPackages = new ArrayList<PackageInfo>();

    installedPackages = context.getPackageManager().getInstalledPackages(0);
    if (installedPackages.size() == 0)
        installedPackages = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);


    if (installedPackages.size() > 0) {
        for( PackageInfo packageInfo : installedPackages ) {
     String packageName = packageInfo.packageName;
     
     if (packageName.startsWith(gpsStatusPackage)) {
         hasGpsStatus = true;
         break;
     }
        }
    } else {
        hasGpsStatus = true;
    }

    if (hasGpsStatus) {
        Intent intent = new Intent(gpsStatusAction);
        context.startActivity(intent);
    } else {
     

    }

  • 相关阅读:
    python安装cnstd卡住
    _、__、__xx__之间的差别
    Celery模块使用
    同一主机,开启多个不同端口的redis进程
    php配置变更记录
    Linux安装Nodejs
    ElasticSearch中term和match探索
    Centos安装elasticsearch,php连接使用
    centos8自定义目录安装php7.3
    centos8自定义目录安装nginx
  • 原文地址:https://www.cnblogs.com/janehlp/p/3156578.html
Copyright © 2011-2022 走看看