5

tôi có phương pháp giải quyết Intent để một ComponentName:Tại sao Activity.getPackageManager() trả về null

private static ComponentName resolveViewExternalIntent(Context context) 
{ 
    Intent intent = createIntent(); 
    return intent.resolveActivity(context.getPackageManager()); 
} 

Hiếm khi, tôi nhận được báo cáo tai nạn ACRA sau:

java.lang.NullPointerException 
    at android.content.Intent.resolveActivity(Intent.java:4518) 
    at com.mypackage.myclass.resolveViewExternalIntent(SourceFile:271) 
    at om.mypackage.myActivity.onResume(SourceFile:517) 

Đó dòng trong lớp Intent nhận được NPE vì PackageManager là null.

Tôi thấy điều này không thường xuyên, nhưng thường xuyên đủ khiến tôi viết câu hỏi này.

Có ai có bất kỳ ý tưởng nào, trong hoàn cảnh nào có thể Context/Activity.getPackageManager() trả về null? Trong trường hợp của tôi, context là đối tượng Activity, không phải là ApplicationContext. Ứng dụng đang thực hiện phương thức vòng đời Activity.onResume() khi điều này xảy ra.

+0

Ngữ cảnh của bạn không phải là vô giá trị? –

+0

Nếu có, tôi có nhận được dấu vết ngăn xếp đó không? Vì vậy, không, ngữ cảnh không thể rỗng. –

+0

Bên cạnh đó, tôi gọi đây là resolveViewExternalIntent (this) trong đó 'this' là Activity, vì vậy nó không thể là null. –

Trả lời

0

Bạn không chỉ định ý định có mục đích rõ ràng hoặc mục đích rõ ràng. Bạn có thể thử điều này:

Intent i = new Intent(Intent.ACTION_ZZZ); // Replace ZZZ 

và sau đó gọi trình quản lý gói để kiểm tra xem các ứng dụng hoặc tính năng đó có sẵn trên thiết bị của bạn hay không.

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