Khi bạn làm startActivity()
với trình chọn, Android sẽ liệt kê tất cả các ứng dụng có quyền xử lý Intent
cùng với các tùy chọn để đặt nhiệm vụ này vĩnh viễn hoặc một lần (trên ICS của nó) "và" Chỉ một lần "nút tác vụ, trên hộp kiểm 2.x của nó). Tuy nhiên đối với mã này:Không thể thực hiện startActivity() với Trình chọn chỉ yêu cầu một lần cho mỗi ứng dụng
public class Redirector {
public static void showActivityWithChooser(Context context, int chooserLabelTitleId, Intent intent) {
try {
context.startActivity(Intent.createChooser(intent,
context.getResources().getString(chooserLabelTitleId)));
} catch(Exception e) {
e.printStackTrace();
}
}
public static void viewInExternalApplication(Context context, String url) {
Intent intent = new Intent( Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
showActivityWithChooser(context, R.string.open_chooser_title, intent);
}
}
Tôi thấy không có | nút "Luôn Chỉ một lần" và không thể đưa ra lựa chọn của tôi vĩnh viễn (tôi đã ứng dụng được liệt kê chỉ và có thể bắn bất kỳ bằng cách khai thác nó). Những gì tiểu học tôi bỏ qua mà làm cho Android không thể làm cho sự lựa chọn của người dùng liên tục?
Xem các bức ảnh: left thoại là những gì tôi muốn nhìn thấy, nhưng đúng là những gì tôi có được bây giờ (số lượng khác nhau của các ứng dụng trong cả hai hộp thoại là không thích hợp):
'Luôn luôn' có nghĩa là thực hiện lựa chọn vĩnh viễn. Ứng dụng của bạn không có cách nào để điều khiển hộp thoại này, một phần của Android trực tiếp. – mah
@mah: Bạn đã bỏ lỡ điểm. –
Thật vậy, tôi đã làm. Tuy nhiên, nửa sau của bình luận của tôi là viết tắt; đây không phải là hộp thoại bạn có thể kiểm soát từ ứng dụng của mình. Vấn đề là bạn đang gọi showActivityWithChooser, không nhằm cho phép người dùng thay đổi mặc định của họ mà thay vào đó là nhằm buộc người dùng phải chọn. – mah