2012-04-24 4 views
5

Tôi đang cố gắng sử dụng Intplicit intent để khởi chạy một hoạt động trong cùng một ứng dụng và cho một hoạt động của ứng dụng khác (ứng dụng khác của tôi, không phải là bản địa), nhưng không thể thành công trong bất kỳ các trường hợp.Intent Intent không được gọi là

Đây là mẫu mã của tôi cho phần đầu tiên (tức là để khởi động một hoạt động trong cùng một ứng dụng):

Hoạt động Bên TESTActivity

Intent intent = new Intent(); 
intent.setAction("com.myapp.game.myimplicit_action"); 
startActivity(intent); 

và đây là lời tuyên bố file manifest của tôi đối với một số hoạt động nói 'ImplicitActivity' với cùng một hành động:

<activity 
    android:name=".TESTActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

<activity android:name=".ImplicitActivity"> 
    <intent-filter> 
    <action android:name="com.myapp.test.myimplicit_action" /> 
    </intent-filter> 
</activity> 

Cả hai hoạt động TESTActivityImplicitActivity nằm trong cùng một ứng dụng trong cùng một gói. Vẫn hoạt động ImplicitActivity của tôi không được gọi.

Trả lời

12

Tôi đã tìm ra được sự cố. Đăng câu trả lời cho những người khác phải đối mặt với cùng một vấn đề.

Chúng tôi cần thêm Danh mục mặc định để làm cho ý định tiềm ẩn hoạt động. Vì vậy, đây là mục kê khai chính xác cho cùng một hoạt động:

<activity 
    android:name=".TESTActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

<activity android:name=".ImplicitActivity"> 
    <intent-filter> 
    <action android:name="com.myapp.test.myimplicit_action" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity>