其他软件包中的Android调用活动不';行不通

其他软件包中的Android调用活动不';行不通,android,package,start-activity,Android,Package,Start Activity,我正试图在另一个包中开始一项活动,我已经看到了很多关于这个主题的答案,但我发现的答案似乎对我不起作用 以下是我如何称呼其他活动: Intent intent = new Intent(); intent.setClassName("com.packageroot.package2", "com.packageroot.package2.MainActivity"); context.startActivity(intent); 这是我的清单: <manifest xmlns:andro

我正试图在另一个包中开始一项活动,我已经看到了很多关于这个主题的答案,但我发现的答案似乎对我不起作用

以下是我如何称呼其他活动:

Intent intent = new Intent();
intent.setClassName("com.packageroot.package2", "com.packageroot.package2.MainActivity");
context.startActivity(intent); 
这是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.packageroot" >

<application
       <activity
            android:name=".package1.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.packageroot.package2.MainActivity"
            android:label="@string/title_activity_main"
            android:theme="@style/AppTheme"
            android:parentActivityName=".package1.MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".package1.MainActivity"/>

        </activity>


您可以尝试将包添加到依赖项下的build.gradle文件中:

dependencies {
    compile 'com.packageroot.package2'
}
更改此行:

intent.setClassName("com.packageroot.package2", "com.packageroot.package2.MainActivity");

第一个参数是“包名”。

如果你的意图贯穿于软件包,这就是你应该做的。 在你的舱单上

<activity
    android:name=".MainActivity"
    android:label="@string/app_name" 
    android:exported="true">//got to declare this
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="YOUR ACTION NAME" />
            //At least one category,use DEFAULT if you don't have one
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

对我来说,最好的解决办法就是控制后退按钮

@Override
public void onBackPressed() {
    Intent intent = new Intent(CurrentActivity.this, SecoundActivity.class);
    startActivity(intent);
    finish();
}
Intent intent = new Intent();
            intent.setAction(YOUR ACTION NAME);
            intent.addCategory(Intent.CATEGORY_DEFAULT);
            startActivity(intent);
@Override
public void onBackPressed() {
    Intent intent = new Intent(CurrentActivity.this, SecoundActivity.class);
    startActivity(intent);
    finish();
}