0

在我的应用程序中,我在设备上启动其他应用程序,如下所示:

    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

我应该怎么做才能防止强制关闭我的应用程序?

4

3 回答 3

4

新项目

要将 In-app Billing Version 3 库添加到新的 In-app Billing 项目中:

将 TrivialDrive 示例文件复制到您的 Android 项目中。修改您复制的文件中的包名称,以将包名称用于您的项目。在 Eclipse 中,您可以使用此快捷方式:右键单击包名称,然后选择 Refactor > Rename。

如果要使用trivialdrivesample示例,则必须更改包名称。开发者页面上面的代码片段是这样说的,而你的 logcat 也是这样说的。

顺便说一句,从 logcat 中编辑出对的引用trivialdrive是没有意义的。如果您要发布 logcat,请不要将其编辑为其他内容。

更新

好的,我明白你现在问的更好了。我认为问题可能出在您在意图上设置动作/标志/等的方式上。我没有看到任何明显的错误,但是方法getLaunchIntentForPackage()这里的源代码)为你设置了这些东西,所以你不必这样做。如果删除 、 和 调用,同样的事情还会addCategory()发生setAction()setFlags()?如果您仍然想要ACTIVITY_RESET_TASK_IF_NEEDED标志,您可以将其添加到 with 中addFlags(),但我会先尝试不使用它。

不过,这很奇怪。ACTIVITY_NEW_TASK应该是为了防止这种事情发生。

于 2013-07-16T16:08:26.020 回答
2

我知道这篇文章是在 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.");
    }

问候,

于 2015-10-27T20:32:19.950 回答
0

对于晚来这里的人,以及想要使用不同包的人(我也遇到了这个问题与谷歌琐碎示例项目)。

您是否已将 Gradle.build 文件中的 applicationID 重命名为您的包名称?

如果上述方法不起作用,则提示:在 Android Studio 中 => 只需使用编辑-> 在路径中查找 -> 包名称进行更改(包的剩余部分存在于项目中的某处,您将找到可以更改它的位置)。

PS Tech Lutiers 的 Trivial 示例解决方案可在本地设备上运行,但 Google Play 控制台中不允许使用 com.example,因此最好正确执行。

于 2018-04-30T11:31:05.847 回答