0
似乎有两个问题,我遇到了问题。第一种情况是,当我启动时钟应用程序并完美工作时,这似乎是我推出大多数应用程序时的情况。启动某些android应用程序的意图导致IllegalStateException
第二种情况是当我尝试启动诸如电话活动之类的活动时。当我去获取Intent时,getLaunchIntentForPackage(app.pname)返回null。有没有不同的方式来获得电话活动的意图,以便我可以在这种情况下启动它?
第三种情况是当我去启动诸如Camera活动的活动时。看起来我必须让我的androidManifest.xml文件中已经有Camera活动来启动它,但还有其他方法可以解决这个问题吗?我的应用程序具有可以从其UI中启动任何应用程序的能力,因此我无法将Android设备的每一项活动事先添加到我的清单文件中。谢谢!
的Java:
Intent launchApp = getPackageManager().getLaunchIntentForPackage(app.pname);
System.out.println(Intent of " + appName + ": + " " +launchApp);
if(launchApp!=null){
System.out.println("Permission granted to launch " + appName);
startActivity(launchApp);
}
else{
System.out.println("Permission not granted to launch " + appName);
}
的logcat:
08-07 09:38:57.031: I/System.out(1056): Intent of Clock: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.htc.android.worldclock/.WorldClockTabControl }
08-07 09:38:57.041: I/System.out(1056): Permission granted to launch Clock
08-07 09:38:59.783: I/System.out(1056): Intent of Phone: null
08-07 09:38:59.783: I/System.out(1056): Permission not granted to launch Phone
08-07 09:39:10.564: I/System.out(1056): Intent of Camera: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.android.camera/com.android.internal.app.ResolverActivity }
08-07 09:39:10.574: I/System.out(1056): Permission granted to launch Camera
08-07 09:39:10.574: D/AndroidRuntime(1056): Shutting down VM
08-07 09:39:10.574: W/dalvikvm(1056): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
08-07 09:39:10.614: E/AndroidRuntime(1056): FATAL EXCEPTION: main
08-07 09:39:10.614: E/AndroidRuntime(1056): java.lang.IllegalStateException: Could not execute method of the activity
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.view.View$1.onClick(View.java:2191)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.view.View.performClick(View.java:2532)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.view.View$PerformClick.run(View.java:9293)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.os.Handler.handleCallback(Handler.java:587)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.os.Handler.dispatchMessage(Handler.java:92)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.os.Looper.loop(Looper.java:150)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.app.ActivityThread.main(ActivityThread.java:4306)
08-07 09:39:10.614: E/AndroidRuntime(1056): at java.lang.reflect.Method.invokeNative(Native Method)
08-07 09:39:10.614: E/AndroidRuntime(1056): at java.lang.reflect.Method.invoke(Method.java:507)
08-07 09:39:10.614: E/AndroidRuntime(1056): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-07 09:39:10.614: E/AndroidRuntime(1056): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-07 09:39:10.614: E/AndroidRuntime(1056): at dalvik.system.NativeStart.main(Native Method)
08-07 09:39:10.614: E/AndroidRuntime(1056): Caused by: java.lang.reflect.InvocationTargetException
08-07 09:39:10.614: E/AndroidRuntime(1056): at java.lang.reflect.Method.invokeNative(Native Method)
08-07 09:39:10.614: E/AndroidRuntime(1056): at java.lang.reflect.Method.invoke(Method.java:507)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.view.View$1.onClick(View.java:2186)
08-07 09:39:10.614: E/AndroidRuntime(1056): ... 11 more
08-07 09:39:10.614: E/AndroidRuntime(1056): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.camera/com.android.internal.app.ResolverActivity}; have you declared this activity in your AndroidManifest.xml?
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1565)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1539)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.app.Activity.startActivityForResult(Activity.java:2919)
08-07 09:39:10.614: E/AndroidRuntime(1056): at android.app.Activity.startActivity(Activity.java:3025)
08-07 09:39:10.614: E/AndroidRuntime(1056): at com.worklight.androidnativeapp.AndroidNativeApp.appClicked(AndroidNativeApp.java:284)
08-07 09:39:10.614: E/AndroidRuntime(1056): ... 14 more
是否有办法仅通过使用应用程序名称或程序包名称来启动活动?还是必须在所有特殊情况下(如相机和拨号程序)进行硬编码? – JSchif11
为什么你需要通过应用程序名称来启动它们,这通常是一个坏主意 – tyczj
我正在制作一个“收藏夹”应用程序,作为我的实际应用程序的一个引导。用户在他们最喜欢的屏幕上选择一组他们想要的应用程序,然后当他们进入喜欢的屏幕时,他们可以按下他们想要启动的应用程序的图标。它的bascially一个荣耀的文件夹。我有每个应用程序的名称,软件包名称和图标存储。我一直在使用packageName来启动上面的应用程序。有没有更好的方式来启动应用程序,包括特殊情况,如相机应用程序或电话应用程序? – JSchif11