0

I am reading AndroidManifest.xml from APk in my C# code and I want to get the package name from my APK file. My code code is getting the string below into thecontent variable. How can I get the package name?

<manifest versionCode=\"5\" versionName=\"1.0.5\" installLocation=\"0\" package=\"com.auditapp.securemeters.code\">
    <uses-sdk minSdkVersion=\"15\" targetSdkVersion=\"27\">  </uses-sdk>
    <uses-permission name=\"android.permission.INTERNET\">  </uses-permission>
    <uses-permission name=\"android.permission.ACCESS_NETWORK_STATE\">  </uses-permission>  \r\n  <uses-permission name=\"android.permission.ACCESS_WIFI_STATE\">  </uses-permission>  \r\n  <uses-permission name=\"android.permission.INSTALL_PACKAGES\">  </uses-permission>
    <uses-permission name=\"android.permission.REQUEST_INSTALL_PACKAGES \">  </uses-permission>
    <uses-permission name=\"android.permission.WRITE_EXTERNAL_STORAGE\">  </uses-permission>
    <uses-permission name=\"android.permission.WRITE_SYNC_SETTINGS\">  </uses-permission>
    <uses-permission name=\"android.permission.READ_EXTERNAL_STORAGE\">  </uses-permission>
    <application theme=\"2131623943\" label=\"2131558434\" icon=\"2131230820\" name=\"com.auditapp.securemeters.code.helper.AppController\" allowBackup=\"-1\" largeHeap=\"-1\" supportsRtl=\"-1\">
        <receiver name=\"com.auditapp.securemeters.code.helper.ConnectivityReceiver\" enabled=\"-1\">
            <intent-filter>
                <action name=\"android.net.conn.CONNECTIVITY_CHANGE\">        </action>
            </intent-filter>
        </receiver>
        <provider name=\"android.support.v4.content.FileProvider\" exported=\"0\" authorities=\"com.auditapp.securemeters.code.provider\" grantUriPermissions=\"-1\">
            <meta-data name=\"android.support.FILE_PROVIDER_PATHS\" resource=\"2131755008\">      </meta-data>
        </provider>
        <activity theme=\"2131624229\" name=\"com.auditapp.securemeters.code.activity.SplashActivity\" screenOrientation=\"1\">
            <intent-filter>
                <action name=\"android.intent.action.MAIN\">        </action>
                <category name=\"android.intent.category.LAUNCHER\">        </category>
            </intent-filter>
        </activity>
        <activity name=\"com.auditapp.securemeters.code.activity.MainActivity\" screenOrientation=\"1\">    </activity>  \r\n    <activity name=\"com.auditapp.securemeters.code.activity.LoginActivity\" screenOrientation=\"1\">    </activity>
        <activity name=\"com.auditapp.securemeters.code.activity.QuestionActivity\" screenOrientation=\"1\">    </activity>
        <activity name=\"com.auditapp.securemeters.code.activity.SelectAuditActivity\" screenOrientation=\"1\">    </activity>
        <activity name=\"com.auditapp.securemeters.code.activity.RevisedQuestionActivity\">    </activity>
        <activity label=\"History\" name=\"com.auditapp.securemeters.code.activity.HistoryAuditListActivity\">    </activity>
        <activity name=\"com.auditapp.securemeters.code.activity.HistoryQuestionActivity\">    </activity>
        <meta-data name=\"android.arch.lifecycle.VERSION\" value=\"27.0.0-SNAPSHOT\">    </meta-data>
    </application>
</manifest> 

Code

using (BinaryReader s = new BinaryReader(strm))
{
    byte[] bytes2 = new byte[size];
    Array.Copy(bytes, bytes2, size);
    AndroidDecompress decompress = new AndroidDecompress();
    String content = decompress.decompressXML(bytes);
    String regex = "package \\{color: (#(\\d|[a-f]){6};)}";
    String input = content;
    MatchCollection coll = Regex.Matches(input, regex);
    String result1 = coll[0].Groups[1].Value;
}
Palle Due
  • 5,929
  • 4
  • 17
  • 32
Moin Khan
  • 674
  • 2
  • 9
  • 27
  • 4
    Regexes *might* be adequate for a fixed-form XML like yours seems to be, but you'll do yourself a favor if you just use a XML parser. – hugo Aug 06 '19 at 08:56
  • 1
    It seems like normal Xml format so you shoud work with it as with xml. – Erik Šťastný Aug 06 '19 at 08:57
  • Since its a XML you should be able to write a simple xml parser. See this [XmlParser](https://stackoverflow.com/questions/55828/how-does-one-parse-xml-files) – KJSR Aug 06 '19 at 09:36
  • If you want a package name then it is already written in your MANIFEST file. package=\"com.auditapp.securemeters.code\ – virusarthak Aug 06 '19 at 11:09

0 Answers0