Android 问题:从其他程序包启动活动

Android 问题:从其他程序包启动活动,android,Android,您好,我目前在我的android应用程序中有两个软件包,分别是com.packagea和com.packageb。现在我正试图通过以下代码从com.packagea中的活动激活com.packageb String username = ((android.widget.EditText)findViewById(R.id.editUserName)).getText().toString(); String pass = ((android.widget.EditText)fi

您好,我目前在我的android应用程序中有两个软件包,分别是
com.packagea
com.packageb
。现在我正试图通过以下代码从
com.packagea
中的活动激活
com.packageb

    String username = ((android.widget.EditText)findViewById(R.id.editUserName)).getText().toString();
    String pass = ((android.widget.EditText)findViewById(R.id.editPass)).getText().toString();
    Intent i = new Intent(this, Authenticate.class);
    i.putExtra("uname", username);
    i.putExtra("pass",pass);
    startActivityForResult(i, 1);
但是,它甚至不会进入
com.packageb
中的Authenticate.class。有什么建议说明为什么那门课不上吗。下面是我在清单文件中声明活动的方式

    <activity
        android:name=".Authenticate"
        android:label="@string/title_activity_options" >
    </activity>


我是否需要随此一起指定包名。只有当我尝试从不同的包调用活动时,才会发生这种情况。关于如何解决此问题的任何建议

请尝试使用完全限定名称:

 com.packageb.Authenticate

    <activity
      android:name="com.packageb.Authenticate"
      android:label="@string/title_activity_options" >
  </activity>
com.packageb.Authenticate
而不是

 <activity
    android:name=".Authenticate"
    android:label="@string/title_activity_options" >
</activity>

如果验证活动位于com.packageb中,并且您试图从com.packagea包中调用它,则可以使用ceonvenence方法:

Intent i = new Intent();
i.setClassName("com.packageb", "com.packageb.Authenticate");
...