簡體   English   中英

android隱式意圖調用應用程序組件

[英]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:具有操作'com.android.intenttest.testAction'和類別DEFAULT的意圖過濾器
  • 活動3:無意圖過濾器

應用2具有:

  • 活動2:具有操作'com.android.intenttest.testAction'和類別DEFAULT的意圖過濾器

在應用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.

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