[英]Android start activity of second app having no icon from first app
我有兩個應用程序。 第一個應用程序有一個活動,我想從第二個應用程序中啟動一個活動。 我正在使用以下代碼:
Intent launchIntent = m_context.getPackageManager().getLaunchIntentForPackage(m_packageName);
if (launchIntent != null) {
m_context.startActivity(launchIntent);
}
這段代碼可以很好地從第二個應用程序啟動活動,但是我希望第二個應用程序沒有任何圖標。 我在第二個應用程序的MainActivity
中使用以下代碼來刪除圖標:
PackageManager p = getPackageManager();
//Removing app icon
ComponentName componentName = new ComponentName(this, com.tools.html2pdf.MainActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
此代碼成功刪除了啟動器圖標,但是我第一個應用程序中的活動無法從第二個應用程序中啟動活動。
在這方面有人可以幫助我嗎? 我想從另一個應用程序的活動中啟動一個沒有圖標的應用程序的活動。
當像完成操作一樣禁用該component
,該component
將無法以任何方式啟動。 但是,有趣的是,第二個應用程序中的其他組件(非禁用活動)仍然可以啟動。
因此,您可以在第二個應用程序中創建MainActivity
的別名,該別名將用於您的目的。 讓我們將別名稱為MainActivityAlias
。
在第一個應用程序中,調用MainActivity
上的intent
。 禁用component
的代碼將被執行,並且不會打開任何內容。 但是,圖標將消失,因為該component
已禁用,並且與此component
相關的所有component
(即圖標)也消失了。
現在,調用intent
上MainActivityAlias
略高於后intent
在第一應用。 這只是MainActivity
的副本,但沒有任何禁用代碼,因此可以啟用和啟動。
一些注意事項:
1)這兩個活動都應具有android.intent.action.MAIN
的<intent-filter>
。
2)您的MainActivity
應該是啟動器activity
,因此manifest
應該有android.intent.category.LAUNCHER
。
3)在MainActivity
內部,您必須檢查呼叫的來源。 如果調用來自第一個應用程序,則執行代碼以禁用您在問題中提到的圖標。 如果呼叫來自啟動器圖標,則使用意圖打開MainActivityAlias
。 您可以像這樣知道呼叫來自何處。
注意-這只是一個想法。 我還沒有測試。
如果您不希望第二個應用程序具有應用程序圖標,只需刪除第二個應用程序中根Activity
的<intent-filter>
ACTION = MAIN和CATEGORY = LAUNCHER。 安裝應用程序后,如果沒有<intent-filter>
且ACTION = MAIN和CATEGORY = LAUNCHER,則不會顯示任何應用程序圖標。
您的應用仍可以啟動第二個應用,但不能使用您描述的方法啟動,因為Android不知道哪個是“啟動” Activity
。 假設您知道要在第二個應用程序中啟動的Activity
的包和類名,則可以這樣啟動它:
Intent launchIntent = new Intent();
launchIntent.setClassName("second.package.name", "fully.qualified.class.name.of.MainActivity");
// add and Intent flags if necessary here
launchIntent.addFlags(Intent.FLAG_ACTIVITY_...);
startActivity(launchIntent);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.