【问题标题】:calling activity in another package在另一个包中调用活动
【发布时间】:2012-04-26 02:25:00
【问题描述】:

所以我有一个默认包为com.android 的应用程序。

在这个包中,我有两个包,分别是 android.audioandroid.video

现在我需要在android.video 中从android.audioactivity2 调用activity1

我尝试过使用类似的东西

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>

【问题讨论】:

  • package是指java包还是不同的apk?
  • 所以 agarwal 的答案是正确的......你只是在 AndeoidManifest.xml 中犯了错误
  • 我已经编辑了这个问题。请看一下。
  • 放置完整的清单文件后

标签: android android-intent package android-activity


【解决方案1】:

我重写了我的整个包结构,将项目包名称指定为com.android,并将其余子包名称指定为com.android.audiocom.android.video,现在它似乎可以工作了。感谢您的所有帮助。

【讨论】:

    【解决方案2】:

    检查你的包名。

    我认为你只给出了“audi”而不是“audio”

    【讨论】:

    • 这是我在复制粘贴过程中犯的一个错误。对此深表歉意。
    【解决方案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。

    【讨论】:

    • 它仍然给力关闭错误android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android/android.audi.activity1}; have you declared this activity in your AndroidManifest.xml? 我已在清单中声明它为android.audio.activity1android.video.activity2
    • 您是否在清单文件中添加了 .audio.activity1 如果您不添加或添加方式错误,则会导致此错误
    • 您还需要其他信息吗?
    • 发布完整清单...似乎它被命名为 com.android 并且活动在 android 中。*
    • 尝试任何其他包名而不是“com.android”
    【解决方案4】:
    in manifest decalre like
    

    &lt;activity android:name=”.activity1” android:label=”Activity 1”&gt; &lt;intent-filter&gt; &lt;action android:name=”android.audio.activity1”/&gt; &lt;category android:name=”android.intent.category.DEFAULT”/&gt; &lt;/intent-filter&gt; &lt;/activity&gt;

    并且在从任何活动中调用时... startActivity(new Intent(“android.audio.activity1”)); 希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多