当前位置: 首页 > 知识库问答 >
问题:

如何同时安装两个apk?

籍永安
2023-03-14

我对我的应用程序有一个要求。我有一个用来显示书籍的应用程序和一个用来阅读书籍的应用程序,基本上是查看器。我有两个问题:

    null
FATAL EXCEPTION: main
Unable to instantiate activity ComponentInfo{jp.co.atori.A12022411/jp.co.atori.A12022411A.FSDMainLauncherActivity}: java.lang.ClassNotFoundException: jp.co.atori.A12022411A.FSDMainLauncherActivity in loader dalvik.system.PathClassLoader[/data/app/jp.co.atori.A12022411-1.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: jp.co.atori.A12022411A.FSDMainLauncherActivity in loader dalvik.system.PathClassLoader[/data/app/jp.co.atori.A12022411-1.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)

更改manifest后,看起来如下所示:

<activity
    android:name="jp.co.atori.A12022411.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="aircel-bookshelfviewer" />
    </intent-filter>
</activity>
<activity
    android:name="jp.co.atori.A12022411A.FSDMainLauncherActivity"
    android:label="@string/app_name"
    android:taskAffinity="com.jp.co.atori.A12022411A.FSDMainLauncherActivity.viewer"
    android:permission="com.smartebook.android.fsdreader.permission"
    android:theme="@android:style/Theme.NoTitleBar" >
    <intent-filter>
        <action android:name="FSDREADERAPPLICATION" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/*" />
    </intent-filter>
</activity>

共有1个答案

沈华晖
2023-03-14

您可以简单地将所有内容打包为一个应用程序(APK),并提供两个单独的启动器,一个用于阅读器,一个用于查看器。您的舱单看起来如下所示:

    <activity
        android:name=".ViewerActivity"
        android:icon="@drawable/viewer_logo"
        android:label="@string/viewer_activity_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".ReaderActivity"
        android:taskAffinity="com.yourapp.reader"
        android:icon="@drawable/reader_logo"
        android:label="@string/reader_activity_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

所以当用户安装了你的应用程序后,他们会看到两个应用程序图标:一个把你带到你的阅读器,一个把你带到你的查看器。这是同一个应用程序的两个入口点(但在用户看来,它们是两个不同的应用程序)。

 类似资料:
  • 我是全栈开发者(PHP JS)。 我想要一个后端VS代码和一个前端VS代码。 我在教程中看到了一个绿色的VS代码,但我不知道如何将两个VS代码安装在一起。

  • 问题内容: 我有两个数组列表,声明为: 这两个字段都完全包含“值的相同”,实际上在自然界中是对应的。 我知道我可以遍历这样的循环之一: 但是,我想同时遍历两个列表。我知道它们的尺寸完全相同。我怎么做? 问题答案: 您可以使用:

  • 我正在制作一个简单的扫雷游戏(顶部没有菜单和其他东西)所有我需要的是一个9x9板,当每个瓷砖被点击时,如果没有炸弹附近,它要么是空白的,要么说有多少炸弹在它附近,或者说B代表炸弹。 我已经正确地完成了以上所有的工作,并且工作得非常完美。我的问题是,我需要在玩游戏时加入一个从0开始并从0开始连续计数的计时器,直到我点击炸弹停止为止。然后,我会在我的黑板下面有一个地方,用户可以输入他们的名字,下面有一

  • 我正在使用MongoDB,我最终得到了两个集合(无意中)。 第一次收集(样本)有1亿条记录(推文),结构如下: 第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的 用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量) 现在我想

  • 问题内容: 我有两个数组,一个带有url,一个带有内容。他们看起来像这样: 如何同时映射两个数组,并在新创建的元素中使用它们的值? 我需要使用我的reactplayer的url值和内容的值作为播放器下方的文本。 所以它应该看起来像这样: 这可能吗?更好的设置方法是什么? 问题答案: 使用的第二个参数(即当前元素的索引),可以访问第二个数组的正确元素。 如果您的项目中有其中一种库,那么这是该库中各种

  • 问题内容: 程应在同一瞬间开始。我了解,如果你这样做,则下次执行之前需要花费几毫秒的时间。 可能还是不可能?线程应该在同一瞬间开始。我知道,如果你执行,则下次执行thread2.start()需要几毫秒。 这是可能的还是不可能的? 问题答案: 要完全同时(至少尽可能好)启动线程,可以使用CyclicBarrier: 这不必是,你也可以使用 这仍然无法确保它们已正确启动 在其他平台上,确切地说启动线