簡體   English   中英

查找Android應用程序的主要活動

[英]Finding the main activity for an Android application

我有一個自定義啟動器,有時想添加一個按鈕來啟動第三方應用程序。 為此,我需要易於找到的應用程序包名稱,還需要應用程序的主要活動或開始活動。 我用它來創建傳遞給應用程序的Intent。

例如,要創建啟動Skype的意圖,請使用:

`new Intent().setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"))

通過Googling,我可以找到主要活動的名稱,而Skype是一個受歡迎的應用程序,它最終出現了。

我知道,如果我有APK,我可以直接打開它並查看androidmainifest,但是我不確定如何獲取某些應用程序的APK。 例如,我想從Google Play啟動此應用 我可以看到包名稱com.dbapp.android.mediahouse ,但是我不確定如何獲取主要活動的名稱(我嘗試過.MAIN)。

我看過Chrome擴展apk下載器,該下載器可以讓您從Google Play獲取APK,但它似乎不再起作用。

我知道從自定義啟動器啟動第三方應用程序是相當普遍的事情,但是我在搜索時找不到答案。

人們通常如何處理此問題? 您是否從Google Play商店獲取APK?如果是,該怎么做? 同樣,我知道我可以通過閱讀清單來獲取活動,但在很多情況下我都不知道如何獲取APK本身。 任何建議將不勝感激,謝謝!

啟動程序應使用PackageManagerqueryIntentActivities()查找設備上應用程序發布的MAIN / LAUNCHER活動。 這是實現此類啟動器的示例應用程序

PackageManager pm=getPackageManager();
Intent main=new Intent(Intent.ACTION_MAIN, null);

main.addCategory(Intent.CATEGORY_LAUNCHER);

List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);

然后,您可以使用該List<ResolveInfo>ListViewGridView等中顯示可用的活動。

PackageManager提供了一種獲取所需內容的方法:

PackageManager.getLaunchIntentForPackage(String packageName)

您可以使用Intent intent = new Intent(android.content.Intent.MAIN);

或像后面的示例一樣啟動Maps並解析URI:

String uri = "http://maps.google.com/maps?saddr=" + Utils.getLatitude(ShowDetails.this)+","+Utils.getLongitude(ShowDetails.this)+"&daddr="+userLatitude+","+userLongitude;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM