내가 브로드 캐스트 리시버 확장 :NullPointerException이
내 사용자 중 하나에서 ACRA를 사용하여 충돌 보고서 다음있어public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (null == bundle)
return;
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
String currentTimeString = DateFormat.getTimeInstance(DateFormat.SHORT).format(new Date());
int a = 2;
if (currentTimeString.length() == 5) {
a = 3;
}
String minutes = currentTimeString.substring(a);
if (phoneNumber.equals(minutes)) {
//some code
}
}
}
(그래서,이 오류를 반복 할 수 없습니다) :
"java.lang.RuntimeException: Unable to start receiver myapp.service.MyBroadcast: java.lang.NullPointerException
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2144)
at android.app.ActivityThread.access$2400(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1114)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4389)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at myapp.service.MyBroadcast.onReceive(MyBroadcast.java:31)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2103)
... 10 more
java.lang.NullPointerException
at myapp.service.MyBroadcast.onReceive(MyBroadcast.java:31)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2103)
at android.app.ActivityThread.access$2400(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1114)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4389)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)"
if (phoneNumber.equals(minutes)) {
나는 스트 중 하나 알고있는 것처럼 :
그래서, 라인 (31)에 NullPointerException가있다 ngs phoneNumber
또는 minutes
이 null입니다. 그리고 내가 깨달은 것처럼 intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)
은 내 경우에 null이 될 수 없다. currentTimeString
에는 길이가 4 또는 5 기호가 있다고 가정합니다 (예 : 1:45 또는 20:54를 반환하기 때문). 내가 nothing strange이 있어야한다 참조로
NullPointerException
의 원인이 ... - (내가 생각하는 파키스탄)와 이상한 형식으로
DateFormat.getTimeInstance
반환 시간,하지만 어쩌면 이유는이 오류를 만난 사용자는 로케일 en_PK이있다인가?
당신은 당신의 매니 페스트 파일에있는 OUTGOING CALL에 대한 허가를 설정 했습니까? –
@Puru 물론) android.permission.PROCESS_OUTGOING_CALLS' – janot
나는 그것을 시도하지 않고 정확하게 말할 수는 없지만 IMHO에서는 "부분 문자열"접근 방식을 사용해서는 안된다. SimpleDateFormat으로 이동하십시오. http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html .. –