2011-12-06 36 views
5

Trong ứng dụng của tôi, tôi cần sử dụng startActivity để xem nội dung của tệp hoặc sử dụng ứng dụng mặc định để mở tệp nhất định, nhưng đôi khi hệ thống Android không thể cài đặt ứng dụng cần thiết.Làm cách nào để xử lý ActivityNotFoundException?

Câu hỏi của tôi là cách xử lý ngoại lệ này. Tôi muốn một bánh mì nướng, không phải là FC ..

Bất kỳ lời khuyên nào? THX

+0

Nếu bạn muốn xử lý các ngoại lệ sau đó bạn có thể sử dụng try/catch và xử lý nó. Và để giải quyết loại ngoại lệ này, bạn phải đăng ký hoạt động của mình vào tệp kê khai. Không cần đăng ký mọi hoạt động để đăng ký tệp nhưng có khi bạn sử dụng startActivity thì bạn phải đăng ký Hoạt động của mình. – anddev

+0

OK .. Tôi đã thử. Nó hoạt động. THX – xuyao

+0

Nhìn vào câu trả lời đã chỉnh sửa của tôi. Thanks .. – user370305

Trả lời

11

Chỉ cần chỉ cần thêm rằng hành động trong file manifest của bạn ..

như,

<activity android:name=".ActivityName" 
        android:label="@string/app_name"> 
     </activity> 

EDIT:

Bây giờ để bắt ActivityNOtFoundException đặt mã của bạn trong,

try { 

    // Your startActivity code wich throws exception 
} catch (ActivityNotFoundException activityNotFound) { 

    // Now, You can catch the exception here and do what you want 
} 

Lưu ý: Hãy cẩn thận khi bạn bắt được ActivityNotFound Ngoại lệ này nhưng bạn không thể sửa đổi tệp kê khai để chạy thời gian, có nghĩa là bạn đã gặp ngoại lệ và nếu bạn muốn thêm thẻ hoạt động này vào thời gian chạy thì bạn không thể.

+0

Xin lỗi anh chàng .. Đây không phải là những gì tôi cần. Tôi muốn cho hệ thống quyết định hoạt động nào sẽ chạy. – xuyao

1

Nếu bạn muốn hiển thị lỗi như bánh mì nướng sau đó

try { 
    startActivity(intent); 

} catch (ActivityNotFoundException e) { 
    // TODO: handle exception 
    //Show Toast... 
} 

Lỗi này xảy ra bởi vì hoạt động này không được đề cập trong file manifest.

<activity android:name=".yourActivity" 
     android:label="@string/app_name"> 
</activity> 
+0

chính xác ~ cảm ơn ~ – xuyao

2

Tôi nghĩ câu hỏi của bạn là nhiều hơn: "làm cách nào tôi có thể bắt ngoại lệ nhất định và ngăn chặn sự cố". Đây là cách bạn làm điều đó trong mã:

try { 
    // here is your code that can potentially throw the exception and the force crash 
} catch (ActivityNotFoundException activityNotFound) { 
    Toast.makeText(this, "your error message", Toast.LENGTH_SHORT).show(); 
    // maybe also log the exception, for future debugging? 
} 

Phạt cảnh cáo, đừng lạm dụng điều này: đó là nguy hiểm đối với "âm thầm nuốt" ngoại lệ và có thể làm cho ứng dụng của bạn không ổn định và giới thiệu kỳ lạ và khó debug hành vi .

+0

Cảm ơn, nó phù hợp với tôi. – xuyao

7

Bạn có thể sử dụng phương pháp resolveActivity

if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivity(intent); 
    }else { 
     Toast.makeText(this,"No suitable app found!",Toast.LENGTH_SHORT).show(); 
    } 
Các vấn đề liên quan