Android Kotlin-尝试在单击时从另一个应用打开一个应用
我有两个程序,动画和颜色选择器1。当我点击动画程序中的菜单项时,我试图打开ColorPicker1。总体目标是添加startActivityForResult,并将一些信息从ColorPicker1传递回动画程序,但目前我至少尝试让程序在不崩溃的情况下打开 在动画中,我已将ColorPicker1添加到我的清单文件中Android Kotlin-尝试在单击时从另一个应用打开一个应用,android,kotlin,android-intent,Android,Kotlin,Android Intent,我有两个程序,动画和颜色选择器1。当我点击动画程序中的菜单项时,我试图打开ColorPicker1。总体目标是添加startActivityForResult,并将一些信息从ColorPicker1传递回动画程序,但目前我至少尝试让程序在不崩溃的情况下打开 在动画中,我已将ColorPicker1添加到我的清单文件中 <activity android:name=".MainActivity" android:label="@string/a
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.example.colorpicker1.MainActivity" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
但是,当我点击菜单项访问ColorPicker1时,应用程序崩溃,我收到一个错误,即没有活动文件来处理该意图
E/AndroidRuntime: FATAL EXCEPTION: main
Process: android.matt.animation, PID: 12467
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.colorpicker1.MainActivity }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1937)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1616)
at android.app.Activity.startActivityForResult(Activity.java:4487)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
at android.app.Activity.startActivityForResult(Activity.java:4445)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
at android.app.Activity.startActivity(Activity.java:4806)
at android.app.Activity.startActivity(Activity.java:4774)
at android.matt.animation.MainActivity.onOptionsItemSelected(MainActivity.kt:116)
at android.app.Activity.onMenuItemSelected(Activity.java:3450)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:368)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:65)
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:202)
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:780)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:127)
at android.widget.AdapterView.performItemClick(AdapterView.java:318)
at android.widget.AbsListView.performItemClick(AbsListView.java:1158)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3127)
at android.widget.AbsListView$3.run(AbsListView.java:4042)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
[编辑]
下面是对我有用的答案。此外,我还必须使用物理手机进行测试,然后才能启动我的ColorPicker1应用程序。每当我在Android emulator上尝试时,动画应用程序都会因错误而继续崩溃
val launchColorPicker = packageManager.getLaunchIntentForPackage("com.example.colorpicker1") as Intent
startActivityForResult(launchColorPicker, 100)
在动画中,我已将ColorPicker1添加到我的清单文件中
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.example.colorpicker1.MainActivity" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
不,你没有。您已将
添加到动画应用程序中的现有活动中。这与ColorPicker1或任何其他应用程序无关
在菜单项click in Animations下,我使用了一个调用ColorPicker1的主要活动的意图
access_colorpicker -> {
cb!!.setStyle(ChalkBoard.COLORPICKER)
val intent = Intent("com.example.colorpicker1.MainActivity")
startActivity(intent)
return true
}
不,你没有。您创建了一个意图
,引用了添加到动画应用程序中现有活动的动作。这与ColorPicker1或任何其他应用程序无关
但是,当我点击菜单项访问ColorPicker1时,应用程序崩溃,我收到一个错误,即没有活动文件来处理该意图
E/AndroidRuntime: FATAL EXCEPTION: main
Process: android.matt.animation, PID: 12467
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.colorpicker1.MainActivity }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1937)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1616)
at android.app.Activity.startActivityForResult(Activity.java:4487)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
at android.app.Activity.startActivityForResult(Activity.java:4445)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
at android.app.Activity.startActivity(Activity.java:4806)
at android.app.Activity.startActivity(Activity.java:4774)
at android.matt.animation.MainActivity.onOptionsItemSelected(MainActivity.kt:116)
at android.app.Activity.onMenuItemSelected(Activity.java:3450)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:368)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:65)
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:202)
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:780)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:127)
at android.widget.AdapterView.performItemClick(AdapterView.java:318)
at android.widget.AbsListView.performItemClick(AbsListView.java:1158)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3127)
at android.widget.AbsListView$3.run(AbsListView.java:4042)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
这是因为没有任何东西与意图相匹配。您的
需要两个操作之一加上启动器
类别。您的意图
具有合适的操作,但未指定类别
如果将LAUNCHER
类别添加到Intent
,您应该能够启动动画应用程序的MainActivity
的另一个副本。这与ColorPicker1或任何其他应用程序无关
当我点击动画程序中的菜单项时,我试图打开ColorPicker1
动画应用程序中的意图
需要识别ColorPicker1应用程序中的活动。修改动画应用程序清单对此没有帮助。重要的是ColorPicker1应用程序清单中的内容
步骤1:在IDE或其他编辑器中打开ColorPicker1的清单
第二步:寻找你想要开始的活动
步骤3:查看该活动的
步骤4:在动画应用程序中,修改你的意图
以匹配该
,并使用setPackage()
将意图
绑定到ColorPicker1应用程序的应用程序ID以下是我的新意图信息的外观访问\u colorpicker->{cb!!.setStyle(黑板.colorpicker)val Intent=Intent(“android.intent.action.MAIN”)intent.setPackage(“com.example.ColorPicker1”)startActivity(intent)return true}
但当我尝试访问android.content.ActivityNotFoundException:未找到处理intent的活动{act=android.intent.action.MAIN pkg=com.example.ColorPicker1}
@ClarkeWoogner:您想要的活动上的
是否有一个
元素不是默认值
?如果是,您的意图也需要有这个类别。它有一个启动器类别。我如何将其添加到意图类别中?
@ClarkeWoogner:Intent.setCategory(“android.intent.category.LAUNCHER”)
将是最直接的方式。在调用startActivity()之前执行此操作。