2013-07-16 255 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."); 
    } 

问候这段代码,