2011-11-16 15 views

Trả lời

13

Bạn cần phải khai báo một ý định lọc trong Manifest của bạn (tôi lấy ví dụ sau từ Barcode Scanner):

<activity android:name="..."> 
    <intent-filter> 
     <action android:name="com.google.zxing.client.android.SCAN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Sau đó tạo một mục đích với chuỗi hành động tương tự:

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
startActivityForResult(intent, code); 

Android sẽ bắt đầu hoạt động của bạn (hoặc nó sẽ hiển thị một hộp thả xuống nếu có nhiều ứng dụng chia sẻ cùng một chuỗi hành động).

+0

Cảm ơn, tôi vừa đọc qua Tệp kê khai Barcodescanner và phát hiện ra điều tương tự. :] – Force

21

Là một thay thế cho câu trả lời của Dalmas, bạn có thể thực sự xuất Activity mà không cần tạo <intent-filter> (cùng với những rắc rối khi đến với một hành động tùy chỉnh).

Trong Manifest chỉnh sửa thẻ Activity bạn như vậy:

<activity 
    android:name=".SomeActivity" 
    .... 
    android:exported="true" /> 

Phần quan trọng là android:exported="true", thẻ export này xác định "có hay không hoạt động có thể được đưa ra bởi các thành phần của ứng dụng khác". Nếu số <activity> của bạn chứa <intent-filter> thì thẻ này được đặt thành true tự động, nếu không thì nó được đặt thành false theo mặc định.

Sau đó, để khởi động Activity làm điều này:

Intent i = new Intent(); 
i.setComponent(new ComponentName("package name", "fully-qualified name of activity")); 
startActivity(i); 

Tất nhiên với phương pháp này bạn sẽ cần phải biết chính xác tên của hoạt động bạn đang cố gắng để khởi động.

+0

cảm ơn rất nhiều! ứng dụng của tôi đột nhiên bắt đầu ném lỗi này ngay cả sau khi thực hiện thay đổi không quan trọng, ngay cả sau khi tôi đã xóa thay đổi đó, nhưng điều này đã khắc phục điều đó! – Michael

+0

đặc điểm kỹ thuật rất tốt về hành vi mặc định. Một ứng dụng bên ngoài đã nói rằng hoạt động chính của ứng dụng của tôi đã được xuất và tôi không thể hiểu tại sao cho đến khi tôi đọc câu trả lời của bạn ... chúc một ngày tốt lành! – Antonino

Các vấn đề liên quan