Tôi có thiết lập bộ thu phát để thông báo bật lên được hiển thị cho người dùng sau mỗi lần nâng cấp ứng dụng của tôi hoặc nếu đây là lần đầu tiên gói được cài đặt. Tôi đã thử nghiệm trên Droid của tôi chạy Android 2.2 cả hai như là một cài đặt mới và sau khi nâng cấp ứng dụng của tôi, cũng như trong Emulator chạy 1,5 và 1,6, và tôi thấy tất cả mọi thứ chạy tốt.Lỗi phát sóng Android: Không tìm thấy lớp học ngoại lệ
Tuy nhiên, tôi nhận được một báo cáo lỗi từ một người dùng liệt kê các ngoại lệ sau đây:
java.lang.RuntimeException: Unable to instantiate receiver
com.name.pkg.FirstRunBroadcastReceiver: java.lang.ClassNotFoundException: com.name.pkg.app_name.FirstRunBroadcastReceiver in loader dalvik.system.PathClassLoader[/data/app/com.name.pkg.app_name.apk]
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
at android.app.ActivityThread.access$3200(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.name.pkg.app_name.FirstRunBroadcastReceiver in loader dalvik.system.PathClassLoader[/data/app/com.name.pkg.app_name.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780)
... 10 more
Ai đó có thể cho tôi biết lý do tại sao một số người sử dụng tôi đã nhận được ngoại lệ này?
Trong tập tin Manifest của tôi, tôi có những thứ thiết lập như thế này:
<receiver android:name=".FirstRunBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACE"/>
<data android:scheme="package" android:path="com.name.pkg.app_name">
</intent-filter>
</receiver>
Các FirstRunBroadcastReceiver lớp được thiết lập như thế này:
package com.name.pkg.app_name;
public class FirstRunBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Contenxt context, Intent intent)
{
Uri uri = intent.getData();
if(uri.toString().compareTo("package:com.name.pkg.app_name") == 0)
{
//set shared prefs data to determine if start-up message should be shown
}
}
}
Upon a lần đầu tiên cài đặt, giá trị mặc định cho chia sẻ prefs được thiết lập sao cho thông báo bật lên sẽ được hiển thị, nhưng tôi sẽ không nghĩ rằng sẽ có bất cứ điều gì để làm với ngoại lệ này.
Tôi đã thử nghiệm lại lần nữa và tôi không nhận được ngoại lệ. Cảm ơn vì bất kì sự giúp đỡ nào của bạn.
Đây có phải là điều liên tục cho người dùng này không? Hay nó chỉ xảy ra một lần? – Falmarri
Hi Falmarri, tiếc là tôi không có ý tưởng nếu đây là một ngoại lệ liên tục hay không. Tôi đã nhận được báo cáo thông qua Android Market. Ai đó gặp phải lỗi này đã không gửi cho tôi một email, điều đó thật tuyệt. Vì vậy, tôi chỉ không biết. Chỉ có một báo cáo lỗi cho điều này trong tài khoản Market của tôi, nhưng điều đó không nhất thiết có nghĩa là bất cứ điều gì. – Michael
Bạn đã giải quyết vấn đề này chưa? - Đăng câu trả lời. – levi