2013-02-26 5 views
0

일부 응용 프로그램에서 다른 응용 프로그램의 작업에 액세스하는 일부 응용 프로그램에서 작업을 수행하고 있습니다 (이 응용 프로그램은 응용 프로그램에서 응용 프로그램을 다운로드 할 수 있습니다) , 다른 응용 프로그램이 몇 가지 충돌이 있고, 뭔가 잘못 않으면 내가다른 응용 프로그램의 활동이 충돌하면 내 응용 프로그램이 자동으로 충돌합니다.

Intent i=new Intent(); 
i.setComponent(new ComponentName("com.myapp.package", "com.myapp.package.className")); 
i.setAction(Intent.ACTION_MAIN); 
startActivity(i); 

, 내 버튼 클릭 리스너에서 다음 코드로 활동을 시작하고 충돌합니다.

내 응용 프로그램이 자동으로 작업 관리자에 의해 살해 된 결과로, 로그를 검색 할

,

02-26 17:39:31.469 281 532 I ActivityManager: START {act=android.intent.action.MAIN flg=0x14000000 cmp=com.example.dummy.mydummyapp2.DummyApp2 (has extras) u=0} from pid 8487 
02-26 17:39:31.469 281 532 W WindowManager: Failure taking screenshot for (230x143) to layer 22000 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: FATAL EXCEPTION: main 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dummy.mydummyapp2/com.example.dummy.mydummyapp2.DummyApp2}: java.lang.NullPointerException 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.os.Looper.loop(Looper.java:137) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: Caused by: java.lang.NullPointerException 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at com.example.dummy.mydummyapp2.DummyProvider.search(DummyProvider.java:136) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at com.example.dummy.mydummyapp2.DummyApp2.onCreate(DummyApp2.java:115) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5008) 
02-26 17:39:31.541 16816 16816 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
. 
. 
02-26 17:39:31.553 281 24382 W ActivityManager: Force finishing activity com.example.dummy.mydummyapp2/.DummyApp2 
02-26 17:39:31.553 281 24382 W WindowManager: Failure taking screenshot for (230x143) to layer 22015 
*****02-26 17:39:31.553 281 24382 W ActivityManager: Force finishing activity com.example.dummy.mydummyapp1/.activities.DummyApp1***** 
02-26 17:39:32.053 281 294 W ActivityManager: Activity pause timeout for ActivityRecord{a7082df0 com.example.dummy.mydummyapp2/.DummyApp2} 
02-26 17:39:32.437 281 281 I ActivityManager: No longer want com.google.android.partnersetup (pid 31498): hidden #16 
*02-26 17:39:42.437 281 294 W ActivityManager: Activity destroy timeout for ActivityRecord{a7082df0 com.example.dummy.mydummyapp2/.DummyApp2}* 
02-26 17:40:16.265 281 24383 I ActivityManager: Process com.example.dummy.mydummyapp2 (pid 16816) has died. 
02-26 17:44:10.305 281 444 W ThrottleService: unable to find stats for iface rmnet0 

나는 dummyapp2의 충돌에 대해 걱정하지 오전, 난 단지 왜 내 응용 프로그램과 걱정 다른 응용 프로그램에서 충돌로 인해 추락했습니다.

나는 아래와 같은 의도에서 다른 플래그와

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

하지만 결과

을 시도했습니다.

내 응용 프로그램이 다른 응용 프로그램에서 활동을 시작하고 다른 응용 프로그램이 내 응용 프로그램이 충돌 할 경우에도이 동작은 안드로이드의 정상적인 동작입니까 (예 : ) ???????

제발 누군가 분명히 말하면, 나는 붙어있다. 특정 다른 활동 무언가가, 당신은에 startActivityForResult 사용할 수,

내가 그런 일을 사용하고 나를 위해 일한 (I 예를 들어 같은 바코드 리더 활동을 사용)

답변

0

경우

안부, 나는 그것이 작동하는 희망 너무 당신을 위해

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
intent.putExtra("SCAN_MODE", "QR_CODE"); 
startActivityForResult(intent, 23); 

및 ActivityResult에

,

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 23) { 
     if (resultCode == RESULT_OK) { 
      // use result values 
     final String contents = intent.getStringExtra("SCAN_RESULT"); 
     final String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      //dosmthng 
     } 
    } 
} 

무언가를 반환 의도와 함께하십시오.

내 응용 프로그램에서 barcodereader 응용 프로그램이 작동하지 않으면 응용 프로그램이 계속 작동합니다.

0

다른 활동/응용 프로그램에 대한 호출을 try{}catch{} 블록으로 둘러보십시오. 오류 로그에 NullPointerException이 표시되면 이런 방식으로 충돌을 제어 할 수 있습니다.

관련 문제