1. 程式人生 > >獲得App的包名和啟動頁Activity

獲得App的包名和啟動頁Activity

包名

  包名(Package name)在Android系統中是判斷一個App的唯一標識,不同的App可以有同樣的名字,但是它的包名不可以相同。

  例如我可以自己編譯生成一個App也叫“微信”,但是我App的包名不能為com.tencent.mm(微信的包名為這個),如果我指定的包名如果也和微信一致了,那麼我的手機上只允許安裝這兩個App中的其中一個。說到這很多人就會有疑問,如果有人惡意做了一個和微信內容一模一樣的App,名字和包名都和微信一樣,那怎麼分辨呢?Android中為了防止這樣,還做了一個叫簽名的東西,微信的簽名一般我們是沒有的,所以就可以通過簽名來標識出這款App到底是誰的了,有興趣了可以瞭解下簽名,這裡就不再贅述了。

  一般要知道一個應用的包名的需求來源都是需要跑一個monkey命令的時候,還記得嗎monkey用法?(monkey的文章)monkey的命令中就是需要指定包名的。下面我們就介紹幾種檢視包名的方法:

  一、看原始碼

    一般我們測試的App都是自己公司的App,因此當有原始碼的時候,我們就可以非常容易的知道它的包名。找到工程目錄下的 “AndroidManifest.xml” 的檔案,開啟後:
這裡寫圖片描述

    我們找到package這一項檢視即可。

  二、檢視手機系統設定

    我這裡介紹谷歌原生系統,其他的一些小米、魅族等自己定製後的系統的檢視方法也大同小異。

    操作步驟:“設定” -> “應用” -> “正在執行”(這一步需要注意)-> 選擇要檢視的應用。這個時候就能看到了(如下圖)
這裡寫圖片描述

這裡寫圖片描述

  三、檢視 /data/data/ 目錄

    當我們安裝一款應用的時候,系統就會在 /data/data/ 目錄下建一個目錄,並且檔名就是當前這個應用的包名,我們看一下我手機裡這個目錄下都有些什麼檔案吧:
這裡寫圖片描述

    如果你知道你要檢視的App包名中的一個關鍵詞的話,會更快的找到你應用的包名,否則建議使用其他方法。此方法手機需要root。

  四、GT

    GT的介面中自帶了這個功能,從應用寶上下載GT,然後選擇一個被測應用,就可以看到了。(如下圖)
這裡寫圖片描述

啟動頁Activity

  簡單的來說Activity指的就是App中我們看到的頁面,一個頁面就是一個Activity,通常第一頁啟動起來的頁面我們就稱之為 “啟動頁Activity”。

  我們在做自動化測試中,通常第一步都是啟動被測應用,例如之前介紹的Monkeyrunner、Uiautomator都是這樣的,而啟動的方法就是利用 “包名/啟動頁的Activity”,因此我們在測試的過程中通常需要知道這個Activity的名稱。下面我就介紹幾種檢視啟動頁Activity的方法。

  一、看原始碼

    同樣在原始碼中我們可以直接找到啟動頁的Activity的名稱。 這裡需要找工程目錄下的 “AndroidManifest.xml” 包含 “category的值為android.intent.category.LAUNCHER” 的Activity就是我們要找的:
這裡寫圖片描述

    當我們知道啟動頁Activity名之後,就可以直接輸入“ adb shell am start com.bryan.testbattery/com.bryan.testbattery.activity.MainActivity ” 就可以拉起應用了。

  二、Logcat

    關閉App,開啟LogCat,然後啟動你的App,這個時候仔細看log日誌,一般tag為ActivityManager的會記錄下這麼一段log,而這裡面就記錄了啟動頁的Activity,如下圖:

這裡寫圖片描述

  三、dump package 包名

    使用命令檢視後,同樣是找到包含“category.LAUNCHER” 字樣的Activity即可

這裡寫圖片描述

  四、Monkey

    Monkey可以設定日誌的詳細程度,當我們指定為 -VVV 的時候,並且指定模擬隨機事件為一次,即可檢視:
這裡寫圖片描述

  五、Android程式

    如果你願意做一個一勞永逸的事情,我建議一寫一個App,根據一個包名來獲得啟動頁的Activity,主要依靠PackageManager 這個類,下面是我實現的程式碼。

複製程式碼
/* 通過包名去啟動一個Activity/
public void openApp( String packageName) {
// TODO 把應用殺掉然後再啟動,保證進入的是第一個頁面
PackageInfo pi = null;
try {
pi = mainContext.getApplicationContext().getPackageManager().getPackageInfo(packageName, 0);
} catch (NameNotFoundException e) {
e.printStackTrace();
return;
}

    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    resolveIntent.setPackage(pi.packageName);
    PackageManager pManager = mainContext.getApplicationContext().getPackageManager();
    List<ResolveInfo> apps = pManager.queryIntentActivities(resolveIntent,
            0);

    ResolveInfo ri = apps.iterator().next();
    if (ri != null) {
        String startappName = ri.activityInfo.packageName;
        String className = ri.activityInfo.name;

        System.out.println( "啟動的activity是: " + startappName+":"+className, CommonVar.LOG_SHOW);

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ComponentName cn = new ComponentName(startappName, className);

        intent.setComponent(cn);
        mainContext.getApplicationContext().startActivity(intent);
    }
}

相關推薦

檢視app啟動Activity的方法

一、如何獲取一個APP的包名1.adb shell pm list package -f將獲取手機內所有apk對應的包名和路徑,ctrl+f後輸入你要查詢的app的關鍵詞可快速找到你想要的app包名,如下圖:2.GT的介面中自帶了讀取app包名的功能,從應用寶上或者官網下載G

【Android測試】【隨筆】獲得App啟動Activity

 ◆ 前言   經常看到一些剛剛接觸Android測試的小夥伴在論壇或者QQ群裡問這樣的問題:如何知道一個App的包名呢?它的啟動頁的Activity又是什麼呢?   之前部落格裡也忽略了這一塊,這一節我就專門來介紹一下。 包名   包名(Package name)在Andr

獲得App啟動Activity

包名   包名(Package name)在Android系統中是判斷一個App的唯一標識,不同的App可以有同樣的名字,但是它的包名不可以相同。   例如我可以自己編譯生成一個App也叫“微信”,但是我App的包名不能為com.tencent.mm(微

adb獲取App啟動

apt -c andro mage .com 找到 清除 oba build 第一種情況: 查看手機裏面已經安裝的App: 1、 清除日誌: adb logcat -c 2、 啟動日誌: adb logcat ActivityManager:I *:s 3、 啟動手機App

獲取所有APP啟動Activity

轉載自:http://my.eoe.cn/870420/archive/1314.html public class MainActivity extends Activity { ArrayList<String> list; private List&

手把手教你_怎麽找android應用的啟動activity

color don dsm too key 包名 ani 一個 col 自己主動化測試中常常遇到這個問題,關於這個題目,方法眾多,咱的目的是找個比較簡單靠譜的: 方法一: 先進入cmd窗體,adb shell 後: cd /data/d

手把手教你_怎麼找android應用的啟動activity

 自動化測試中經常遇到這個問題,關於這個題目,方法眾多,咱的目的是找個比較簡單靠譜的: 方法一: 先進入cmd視窗,adb shell 後: cd /data/data ls 可以看到包名了吧,缺點很明顯,必須root手機先 方法二: 先進入cmd視窗: adb s

appium獲取app啟動

1、通過命令獲取當前頁面的activity:adb shell dumpsys window w |findstr \/ |findstr name=(這條命令的作用是,獲取當前app和當前Activity的名字)2、獲取app的包名及app的啟動頁https://www.c

Appium+Python自動化 -獲取 app activity

輸入 manage com dong ger 環境變量 自動 相關 ack 方法一: ①手機通過USB連接電腦 ②打開手機上被測app ③在電腦上 dos命令窗口,輸入命令 adb shell dumpsys window w | findstr \/ | f

解決Xposed攔截並修改:獲取手機已安裝應用的AppApp標籤問題

首先,我們先明白一個問題,如何去遍歷獲取手機已安裝應用的App相應的資訊。 大多數情況下,我們使用PackageManager類提供的getInstalledPackages()介面來獲取手機已安裝應用資訊。 例如博主這裡的程式碼為: PackageManager p

android 讀取本地安裝app 啟動第三方app

獲取手機上安裝app 包名 //讀取本地安裝app PackageManager pageManage = getActivity().getPackageManager(); List<Pac

二.第一個自動化demo,打開APP-如何獲取activity。(真機)

系統 lis cmd 服務 exe 打開 如何 分享 TP 環境配置成功後,我們就可以進行第一個自動化測試了。用真機則不需要安裝安卓模擬器。以一個簡單的打開APP為例。 一、獲取包名和activtity 啟動一個app,我們需要知道它的平臺、版本號、包名、acti

使用Dev Tools檢視App所有Activity

在使用自動化測試工具如appium時,經常需要知道apk的各個activity的名稱。這時我們可以使用Dev Tools來實現我們的目的。 Dev Tools是安卓模擬器自帶的一個開發除錯工具,我們可以通過以下方式把該工具從模擬器移出來然後安裝到我們的真實機器當中。

Appium Android 獲取 Activity 的幾種方法 (轉)

androidm test class .com mps 文件 ren -s tle 本文檔主要記錄“獲取包名和 Activity 的方法”,用於自動化測試時啟動APP。以下方法主要來源於網絡和社區同學的貢獻,特此感謝! 1. 方法一: pm list package查看包

Appium基礎總結1:獲取Activity

主要通過cmd命令:aapt來獲取包名和Activity 1.安裝android build-tools SDK安裝目錄雙擊Manager.exe,勾選Build-tools 2.PATH配置環境變數 將SDK安裝目錄下的\Android\android-sdk\build-tools\24.0.0;新增到

如何檢視當前應用activity

這裡提供一個簡單的方法來獲取package和activity: 在Android模擬器上開啟微信APP,然後開啟CMD,輸入以下命令: adb shell 接下來在#後面繼續輸入以下命令: logcat *:S ActivityManager:V 回車之後會返回以下資訊:   注意紅線

在建立Android專案完成之後修改app

1.修改包名 applyplugin:'com.android.application' android { compileSdkVersion26 buildToolsVersion"26.0

Android 獲取 Activity

終端輸入 adb shell logcat | grep cmp= 找到,這裡以qq為例,包:com.tencent.mobileqq activity:.activity.SplashActi

android檢視當前應用的的activity

使用appium對android app進行自動化測試時,需要指定包名和activity,最簡單的辦法就是開啟被測app終端輸入:adb shell dumpsys activity activities然後檢視cmp選項即可,包名和activity都顯示在其中

安卓常用應用市場常用APP

常用應用市場包名: com.tencent.android.qqdownloader 騰訊應用寶 com.dragon.android.pandaspace 91手機助手 com.hiapk.marketpho 安智應用商店 com.yingyonghu