在我的应用程序中,我在设备上启动其他应用程序,如下所示:
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 :(得分:4)
新项目
将应用内结算版本3库添加到新的应用内结算项目中:
将TrivialDrive示例文件复制到Android项目中。 修改您复制的文件中的包名称以使用项目的包名称。在Eclipse中,您可以使用此快捷方式:右键单击包名称,然后选择Refactor>重命名。
如果要使用trivialdrivesample
示例,则必须更改包名称。 the developer page上面的代码段就是这样说的,而你的logcat也说了同样的话。
顺便说一句,从logcat编辑对trivialdrive
的引用是没有意义的。如果您要发布logcat,请不要将其编辑为其他内容。
<强>更新强>
好的,我现在看到你要求的更好。我认为问题可能在于你在intent上设置action / flags / etc的方式。我没有看到任何明显错误,但方法getLaunchIntentForPackage()
(source here)为你设置了这些东西,所以你不必这样做。如果您删除addCategory()
,setAction()
和setFlags()
来电,会发生同样的事吗?如果您仍然需要ACTIVITY_RESET_TASK_IF_NEEDED
标记,则可以使用addFlags()
添加该标记,但我会在没有它的情况下尝试使用它。
ACTIVITY_NEW_TASK
应该阻止这种事情的发生。
答案 1 :(得分:2)
我知道这篇文章是在13&#39;但要继续回答,请在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.");
}
此致
答案 2 :(得分:0)
对于很晚才来到这里的人,以及想要一般使用不同包的人(我在Google Trivial示例项目中也遇到了这个问题)。
您是否已将Gradle.build文件中的applicationID重命名为您的包名?
如果上述提示不起作用:Android Studio =&gt;只需使用edit-&gt;在路径中找到 - &gt;要更改的包名称(包的剩余部分存在于项目的某个位置,您将找到可以更改它的位置)。
PS Tech Lutiers解决方案适用于在本地设备上运行的Trivial示例工作,但Google Play控制台中不允许使用com.example,因此最好做得正确。