Android Intent with Cordova - 为每个共享推出了新的应用实例。应该只有一个

时间:2014-04-08 15:21:41

标签: android android-intent cordova android-activity instance

我想将其他应用中的网址分享给我。

我正在使用这个Phonegap插件来实现意图:

https://github.com/chrisekelley/olutindo-app/tree/master/plugins/com.borismus.webintent

意图正在运行,但每次我从另一个应用程序共享意图时,我的应用程序的新实例都会启动,但我想使用一个实例。如果应用程序已经打开,则应该重新初始化并使用共享意图初始化将其重新初始化或重新启动。

我尝试了android:launchMode =“singleTop”,但是同样的行为发生了,app会多次打开。

我的清单条目:

    <activity android:configChanges="orientation|keyboardHidden|screenSize"
        android:name=".StartActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop" >
        <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"></action>
            <category android:name="android.intent.category.DEFAULT"></category>
            <category android:name="android.intent.category.BROWSABLE"></category>
            <data android:mimeType="text/plain" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>

这些在我的MainActivity中没有初始化,因为意图将从具有自己功能的javascript初始化(参见上面的PG插件)。

编辑:我尝试使用android:launchMode =“singleInstance”。现在,在每个共享请求中,我的应用程序将被置于顶部,但意图未初始化。如果应用程序已经启动,如何使用cordova再次初始化传入的意图请求?

谢谢!

1 个答案:

答案 0 :(得分:3)

我不确定如何解决这个问题。但我非常确定即使您的代码是launchMode="singleInstance"或singleTask,操作系统也会为每个intent.action打开一个不同的实例。

我找到的解决方法的唯一方法是创建一个空活动,使用唯一的intent.action调用您的活动。

final Intent myIntent = new Intent(this,
MainActivity.class);
myIntent.setAction("android.intent.action.MAIN"); //myIntent.setAction(Intent.ACTION_MAIN);
startActivity(myIntent);

您可以提供听力服务。当您尝试共享服务时,如果有一个intent.action,则会打开您的活动。

相关问题