我们在尝试在TestDriver(Centaur-TD)中定义一个intent以在Centaur中启动dataRead_Activity类时遇到此异常。这两个应用程序位于不同的项目中。
删除了这行代码:
Intent aa = new Intent(TestDriver.this, dataRead_Activity.class);
然后,插入这一个:
startActivity(new Intent("cfts.testtools.Centaur.dataRead_Activity"));
logcat信息更改为:
I/ActivityManager( 163): START {act=cfts.testtools.Centaur.dataRead_Activity u=0} from pid 660
W/System.err( 660): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=cfts.testtools.Centaur.dataRead_Activity }
W/System.err( 660): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
W/System.err( 660): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
W/System.err( 660): at android.app.Activity.startActivityForResult(Activity.java:3351)
W/System.err( 660): at android.app.Activity.startActivityForResult(Activity.java:3312)
W/System.err( 660): at android.app.Activity.startActivity(Activity.java:3522)
W/System.err( 660): at android.app.Activity.startActivity(Activity.java:3490)
W/System.err( 660): at cfts.testtools.abtcs_centaur_td.TestDriver$1.onClick(TestDriver.java:304)
W/System.err( 660): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
D/dalvikvm( 660): GC_CONCURRENT freed 247K, 9% free 7473K/8199K, paused 19ms+6ms, total 225ms
D/dalvikvm( 660): WAIT_FOR_CONCURRENT_GC blocked 30ms
W/System.err( 660): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 660): at android.os.Looper.loop(Looper.java:137)
W/System.err( 660): at android.app.ActivityThread.main(ActivityThread.java:4745)
W/System.err( 660): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 660): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 660): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
W/System.err( 660): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
W/System.err( 660): at dalvik.system.NativeStart.main(Native Method)
Centaur-TD的清单是:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cfts.testtools.abtcs_centaur_td"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" android:debuggable="true">
<activity
android:name="cfts.testtools.abtcs_centaur_td.TestDriver"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="cfts.testtools.centaur.Centaur$dataRead_Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="cfts.testtools.centaur.Centaur$dataRead_Activity" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
Centaur的宣言是:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cfts.testtools.centaur"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:debuggable="true">
<activity
android:name="cfts.testtools.centaur.Centaur"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="cfts.testtools.centaur.Centaur$dataRead_Activity"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="cfts.testtools.centaur.Centaur$dataRead_Activity" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:2)
步骤1:使用自定义操作向第二个活动添加<intent-filter>
:
<intent-filter>
<action android:name="com.testapp.ws.XYZ"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
步骤2:使用适当的Intent开始该活动:
startActivity(new Intent("com.testapp.ws.XYZ"));
有关详细说明,请参阅此处 - https://stackoverflow.com/a/10961409/826657