[英]android implicit intent to invoke app component
我正在嘗試測試如何使用隱式意圖來調用同一應用程序中的組件(我正在使用Android 4.4)。
我有一個MainActivity和一個Activity2。 在AndroidManifest.xml中,
<activity
android:name="com.android.intenttest.Activity2"
android:label="@string/title_activity_activity2" >
<intent-filter>
<action android:name="com.android.intesttest.Activity2Action"/>
</intent-filter>
</activity>
在MainActivity中,我嘗試使用:
Intent intentObj = new Intent();
intentObj.setAction("com.android.intesttest.Activity2Action");
if(intentObj.resolveActivity(getPackageManager()) != null){
startActivity(intentObj);
}
else{
Toast.makeText(getApplicationContext(), "No matching activity found", Toast.LENGTH_SHORT).show();
}
它無法調用Activity2(我可以看到Toast)。 有人可以指出我做錯了嗎?
謝謝。
編輯:
我對場景進行了一些修改,無法解釋我觀察到的情況。 我有兩個應用程序:應用程序1和應用程序2。
應用程式1具有:
應用2具有:
在應用1的活動3中,我有:
Intent intentObj = new Intent();
intentObj.setAction("com.android.intesttest.testAction");
if(intentObj.resolveActivity(getPackageManager()) != null){
startActivity(intentObj);
}
else{
Toast.makeText(getApplicationContext(), "No matching activity found", Toast.LENGTH_SHORT).show();
}
我希望彈出一個選擇器對話框,並要求在App 1的Activity2和App 2的Activity2之間進行選擇。
但它始終顯示App2中的Activity2。 有人可以解釋為什么嗎?
謝謝。
對於問題的第一部分,意圖過濾器需要如下:
<activity
android:name="com.android.intenttest.Activity2"
android:label="@string/title_activity_activity2" >
<intent-filter>
<action android:name="com.android.intesttest.Activity2Action"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
從Android文檔:
In order to receive implicit intents, you must include the CATEGORY_DEFAULT
category in the intent filter. The methods startActivity() and
startActivityForResult() treat all intents as if they declared the
CATEGORY_DEFAULT category. If you do not declare this category in your intent
filter, no implicit intents will resolve to your activity.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.