2013-07-16 316 views
0

在我的應用程序後,我在設備啓動其他應用程序,如:開始崩潰3d後黨的應用程序,該應用程序崩潰

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(packageName); 
    if (LaunchIntent == null) return; 
    LaunchIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    LaunchIntent.setAction(Intent.ACTION_MAIN); 
    LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
    startActivity(LaunchIntent); 

和所有工作正常,直到執行應用程序可能會崩潰。在這種情況下,我的應用程序也會關閉。

01-06 20:13:00.796 4560-4560/com.example.android.trivialdrivesample E/AndroidRuntime: FATAL EXCEPTION: main 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.trivialdrivesample/com.example.android.trivialdrivesample.MainActivity}: java.lang.RuntimeException: Please change the sample's package name! See README. 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:130) 
     at android.app.ActivityThread.main(ActivityThread.java:3683) 
     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:850) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: java.lang.RuntimeException: Please change the sample's package name! See README. 
     at com.example.android.trivialdrivesample.MainActivity.onCreate(MainActivity.java:146) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
     ... 11 more 
01-06 20:13:00.804 1386-1520/?        W/ActivityManager: Force finishing activity com.example.android.trivialdrivesample/.MainActivity 
01-06 20:13:00.804 1386-1520/?        W/ActivityManager: Force finishing activity com.digitalmediarevolutions.kfmobiledesktop/.activities.MainActivity 

我應該怎麼做以防止強行關閉我的應用程序?

+0

從logcat的:'請改變樣品包的名字!請參閱自述文件.' – Geobits

+0

它與另一個應用程序有關,不適用於我的 – Bender

回答

4

新建項目

到應用內結算第3版庫添加到您的新的應用內結算項目:

複製TrivialDrive示例文件到您的Android項目。 修改您複製的文件中的軟件包名稱以使用項目的軟件包名稱。在Eclipse中,您可以使用此快捷方式:右鍵單擊包名稱,然後選擇重構>重命名。

如果要使用trivialdrivesample示例,必須更改包名稱。上面的片段the developer page這樣說,你的logcat說同樣的事情。

順便說一句,從logcat編輯引用trivialdrive毫無意義。如果你打算髮佈一個logcat,不要將它編輯成其他的東西。

更新

好吧,我看你問什麼更好的了。我認爲這個問題可能與您在意圖上設置動作/標誌/等方式有關。我沒有看到任何明顯的錯誤,但方法getLaunchIntentForPackage()source here)爲你設置了這個東西,所以你不必。如果您刪除了addCategory()setAction()setFlags()調用,仍然會發生同樣的情況嗎?如果你仍然想要ACTIVITY_RESET_TASK_IF_NEEDED標誌,你可以用addFlags()加入,但是我會先嚐試它。

雖然這很奇怪。 ACTIVITY_NEW_TASK應該防止這種事情發生。

+0

我不想處理trivialdrivesample,它只是啓動時崩潰的應用程序。我需要知道爲什麼我的應用程序運行微不足道也完成了。 – Bender

+1

我不知道我明白你想要什麼。你的應用程序正在調用trivialdrive(無論是單獨還是通過其他軟件包)。 trivialdrive無法使用其默認軟件包名稱運行。這是造成這次事故的原因。要麼不運行它,要麼改變它的包名稱。 – Geobits

+0

感謝您的回答。你說得對。但是會發生什麼。我的應用程序確實啓動了功能,並且應該啓動安裝在用戶設備上的應用程序。我用trivialdrive應用程序測試設備。所以在設備上安裝任何不正確的應用程序時都會發生這種情況問題是爲什麼我的應用程序完成,如果開始第三部分的應用程序崩潰的原因。 – Bender

0

我知道這個帖子是13' ,而是繼續回答是刪除你的MainActivity

if (base64EncodedPublicKey.contains("CONSTRUCT_YOUR")) { 
     throw new RuntimeException("Please put your app's public key in MainActivity.java. See README."); 
    } 
    if (getPackageName().startsWith("com.example")) { 
     throw new RuntimeException("Please change the sample's package name! See README."); 
    } 

問候這段代碼,