在另一个包中调用活动

时间:2012-04-13 17:39:39

标签: android android-intent package android-activity

所以我的应用程序的默认包为com.android

在这个包中我有两个包android.audioandroid.video

现在我需要从activity1 android.audio的{​​{1}}致activity2来发送android.video

我尝试过使用像

这样的东西
Intent i = new Intent();
i.setClassName("android.video","android.audio.activity1");
startActivity(i);

但这似乎不起作用。 什么是正确的方法呢?哪里出错了? 我无法导航到包裹外的任何活动。

编辑: 这是它在清单中的声明方式。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_title" >
    <activity
        android:label="@string/app_title"
        android:name=".WeaveActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="android.login.LoginActivity"></activity>
    <activity android:name="android.login.RegisterActivity"></activity>

    <activity android:name="android.video.activity2"></activity>

     <activity android:name="android.audio.activity1"></activity>

</application>

4 个答案:

答案 0 :(得分:3)

Intent i = new Intent();
i.setClassName(activity2.this,activity1.class);
startActivity(i);

使用上面的代码并在展示文件中添加这些活动。 你告诉你的包名是com.android

<activity android:name=".audio.activity1"></activity>
<activity android:name=".video.activity2"></activity>

或使用如下完整路径

<activity android:name="com.android.audio.activity1"></activity>
<activity android:name="com.android.video.activity2"></activity>

并且一个小建议你永远不会将你的包名称用作com.android,因为如果在将应用程序提交到Google Play时使用它就不会接受它,因为com.android包用于Android SDK。

答案 1 :(得分:0)

in manifest decalre like

<activity android:name=”.activity1” android:label=”Activity 1”> <intent-filter> <action android:name=”android.audio.activity1”/> <category android:name=”android.intent.category.DEFAULT”/> </intent-filter> </activity>

从任何活动中打电话...... startActivity(new Intent(“android.audio.activity1”)); 希望这会有所帮助。

答案 2 :(得分:0)

检查您的包裹名称。

我认为你只给了“奥迪”而不是“音频”

答案 3 :(得分:0)

我通过将项目包名称设为com.android并将其余子包设为com.android.audiocom.android.video来重写我的整个包结构,现在它似乎可行。谢谢你的帮助。