2010-04-21 49 views
2

我有一個視圖作爲應用程序的主屏幕,其中包含可用應用程序的操作,如圖標+文本對(桌面一樣)。Android自定義類別

我想找出編程什麼活動只在我的AndroidManifest.xml中定義

假設我有:

< activity android:name="example.mainActivity" android:label="mainActivity"> 
    < intent-filter> 
     < action android:name="android.intent.action.MAIN" /> 
     < category android:name="android.intent.category.LAUNCHER" /> 
    < /intent-filter> 
< /activity> 
< activity android:name="example.activity1" android:label="Activity1"> 
    < intent-filter> 
     < action android:name="android.intent.action.VIEW" /> 
     < category android:name="example.custom.ACTIVITY" /> 
    < /intent-filter> 
< /activity> 
< activity android:name="example.activity2" android:label="Activity2"> 
    < intent-filter> 
     < action android:name="android.intent.action.VIEW" /> 
     < category android:name="example.custom.ACTIVITY" /> 
    < /intent-filter> 
< /activity> 

我想是在MainActivity到dinamically閱讀活動1和活性2,因爲當我添加Activity3例如它會被自動讀取。

Intent intent = new Intent(「android.intent.action.VIEW」); intent.addCategory(「example.custom.ACTIVITY」); List resolves = getPackageManager()。queryIntentActivities(intent,0);

在做出決議列表我期望有兩個定義的活動,所以我可以得到他們的標籤,圖像和桌面

我認爲這可以通過定義一個自定義類別,例如完成創建圖標。 custom.ACTIVITY,並在mainActivity中使用packageManager.queryIntentActivities(Intent intent,int flags),但它似乎沒有工作。

我真的想編碼,以便在應用程序中發現已安裝的活動。 你有什麼想法如何做到這一點? 謝謝

回答

1

在我的應用我所定義的動作爲「android.intent.action.MAIN」(而不是「android.intent.action.VIEW」),並檢索工作,你希望:

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory("com.example.ACTIVITY"); 
PackageManager pm = getPackageManager(); 
List<ResolveInfo> list = pm.queryIntentActivities(intent, 0); 

ps,我使用了「com.example」,因爲「example」不是一個好的名稱空間示例,因爲清單中的包聲明必須至少有兩個段(請參見here