【问题标题】:intent from library project to main project从库项目到主项目的意图
【发布时间】:2013-05-09 09:01:49
【问题描述】:

当我尝试使用意图从主项目传递到库项目时,效果很好但是.....当我尝试从库项目到主项目,它不识别主项目中的类

我尝试在我的图书馆项目中写下这个意图:

Intent intent = new Intent(this,com.example.uploadvideo.class);
startActivity(intent);

我将我想要连接的两个活动添加到主项目和库项目的清单中。

【问题讨论】:

    标签: android android-intent android-library


    【解决方案1】:

    库项目不知道主项目。 imo 首选的解决方案是使用操作而不是尝试直接在意图中加载类。如果您想重复使用该库,这也将为您提供更大的灵活性。

    所以图书馆会这样做

    Intent intent = new Intent("com.example.action_video_upload");
    intent.setPackage(mContext.getPackageName()); // only deliver to host app
    

    并且主项目将在清单中使用

    注册该意图
    <intent-filter . . . >
        <action android:name="com.example.action_video_upload" />
    </intent-filter>
    

    更多信息可以在这里找到:developer.android.com

    【讨论】:

    • 同一设备上使用同一库的不同应用程序是否也可能收到该操作?如果是这样,如何防止这种冲突?
    • 这是可能的。对应用程序包使用 intent.setPackageName() 会将广播限制为当前应用程序
    【解决方案2】:

    库项目包含可共享的 Android 源代码和资源,您可以在 Android 项目中引用它们。当您有想要重用的公共代码时,这很有用。库项目不能安装到设备上,但是,它们会在构建时被拉入 .apk 文件中。

    也就是说,图书馆项目要被引用。

    从库中调用主项目的意图有什么意义。

    实际上,您在处理当前主项目以外的项目时,使库项目效率低下..

    【讨论】:

    • 所以你的意思是不可能使用意图从库项目传递到主项目?
    【解决方案3】:

    启动下一个活动为:

    Intent intent = new Intent(this,com.example.UploadVideo.class);
    startActivity(intent);
    

    因为目前您在第二个参数中将错误的 Activity 名称传递给 Intent 构造函数

    【讨论】:

    • @idan : 目前你正在通过uploadvideo.class 而不是UploadVideo.class
    • @idan : 并确保您在方法中使用此代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多