2012-06-28 2 views
0

일부 클라이언트는 앱을 시작할 때 직접 앱이 다운되는 경우가 있습니다.설치 후 Android App이 시작될 때 왜 멈 춥니 까?

public static String getUniqueID(Context context) { 
    return Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); 
} 

는이 호출이 응용 프로그램의 충돌을 만드는 것을 가능 :

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    String deviceId = Local.getUniqueID(this); 

    Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(deviceId)); 

    setContentView(R.layout.main); 
} 

getUniqueId()가 있음을 수행합니다

여기에 주요 활동에에서 onCreate() 메소드의 코드는? onCreate()에 전화해도 될까요? 아니면 충돌하는 Thread.setDefaultUncaughtExceptionHandler()입니까?

이 문제가 발생한 사용자는 앱의 시작 화면이 표시되지 않으며 내가 소유 한 모든 장치에서 문제를 재현하지 못했습니다.

CustomExceptionHandler 예외/오류 스택 추적을 가져 와서 장치 ID를 사용하여 서버로 보냅니다. 문제가 발생한 사용자의 기기 ID가 데이터베이스에 없습니다.

아이디어가 있으십니까? 어떤 기기에서든 그 문제를 개발 한 적이 없었습니다. 이것의 원인이 무엇일까요? 더 자세한 정보를 요구하는 것을 망설이지 말라. 감사

편집 :

E/AndroidRuntime(10067): FATAL EXCEPTION: main 
E/AndroidRuntime(10067): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException 
E/AndroidRuntime(10067): at android.app.LoadedApk.makeApplication(LoadedApk.java:482) 
E/AndroidRuntime(10067): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3909) 
E/AndroidRuntime(10067): at android.app.ActivityThread.access$1300(ActivityThread.java:122) 
E/AndroidRuntime(10067): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184) 
E/AndroidRuntime(10067): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(10067): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(10067): at android.app.ActivityThread.main(ActivityThread.java:4340) 
E/AndroidRuntime(10067): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(10067): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(10067): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(10067): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(10067): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(10067): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(10067): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362) 
E/AndroidRuntime(10067): at android.app.LoadedApk.getClassLoader(LoadedApk.java:305) 
E/AndroidRuntime(10067): at android.app.LoadedApk.makeApplication(LoadedApk.java:474) 
E/AndroidRuntime(10067): ... 11 more 

답변

0

내가

Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); 

일부 장치에서 null을 반환 할 수 있다고 생각 : 은 내가 응용 프로그램이 충돌 때 스택 트레이스 일 것입니다 무슨 찾은 것 같아요.

그래서 당신은 당신의 충돌이 발생

new CustomExceptionHandler(null); 

를 호출 결국.

이것은 충돌 로그를 첨부하면 확인할 수 있습니다.

+0

어떻게 Secure.ANDROID_ID가 null이 될 수 있습니까? 안전하게 할 수 있기 전에해야 할 일이 있습니까? – Alexis

+0

아니요, 일부 장치는이 값을 반환하지 않습니다. – Cullan

관련 문제