【问题标题】:No application can perform this action - Shared code with different flavors没有应用程序可以执行此操作 - 具有不同风格的共享代码
【发布时间】:2019-11-27 16:37:28
【问题描述】:

我正在尝试从我拥有的另一个应用程序(“我以前的应用程序”)的源中创建一个新应用程序(“我的新应用程序”)。

为了做到这一点,我创建了一个新风格,为新风格更改了应用名称和新图标,一切正常。

但我遇到了我无法启动(至少)一项活动。

活动在作为模块包含的库中声明,并在库 manifest.xml 中以这种方式定义:

<activity android:name="com.my.company.core.views.download.VersionActivity"
            android:label="@string/app_name"
            android:exported="false"
            android:screenOrientation="portrait" />

我正在尝试通过以下方式启动该活动:

Intent intent = new Intent(CurrentActivity.this, VersionActivity.class);
startActivity(intent);

如果我只有一个应用程序,例如在终端中安装“我的新应用程序”,它就可以完美运行。但是,如果我在尝试启动活动时安装了两个应用程序“我的新应用程序”和“我以前的应用程序”,Android 会说“没有应用程序可以执行此操作”。

我不能在应用之间共享代码吗?清单中的活动声明有问题吗?顺便说一句,我试过用exported="true",但还是不行。

提前致谢。

【问题讨论】:

    标签: android android-activity android-manifest android-library android-module


    【解决方案1】:

    您可以指定当前应用应使用setPackage 处理意图。

    Intent intent = new Intent();
    intent.setAction("com.my.company.core.views.download.VersionActivity");
    intent.setPackage(context.getPackageName());
    startActivity(intent);
    

    【讨论】:

    • 感谢您的评论。我已经按照您所说的进行了尝试,它一直说“没有应用程序可以执行此操作”。
    • 我已更新我的答案以尝试使用隐式意图。你真的不需要,android通常会妥善处理所有这些东西。 ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多