Android:如何强制关闭活动并从接收器重新开始?

时间:2014-12-08 19:11:00

标签: android angularjs cordova android-activity broadcastreceiver

我有基于Cordova / Angular的应用程序,somu安装了第三方插件。应用程序有一些reciver应该接收运行给定URL上的主要活动。

它工作正常,但从接收器调用activty是应用程序不是每次初始化。

我认为这是Javascript初始化的一些问题,但事实并非如此。

关于活动如何开始是否有问题。

主要活动已将launchmode:un Manifest设置为:

android:launchMode="singleTop"

以及其他活动:

android:launchMode="singleInstance" 

我可以通过这些标志从接收器开始活动:

//intentOne.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                //intentOne.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                //intentOne.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                //intentOne.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

我尝试了很多标志和设置fow Manifest文件的组合,但没有人能正确地为我工作。

有人可以帮我解决这个问题吗?

我认为该解决方案可以重置运行主要活动并在不同的URL上再次完全启动它,但我不知道它究竟是怎么做的。

感谢您的帮助。

以下是关于onCreate的代码:

 public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();

        // GET PASSED PARAMS (CALLED PHONE NUMBER, ETC)
        Bundle b = getIntent().getExtras();
        dialedNumber = b.getString("phone_number");
        urlToCall = "file:///android_asset/www/index.html#/call-result/"+dialedNumber;

        if(dialedNumber != null && !dialedNumber.isEmpty() )
        {
            super.loadUrl(urlToCall);
        } else {
            super.loadUrl(Config.getStartUrl());
        }

    }

2 个答案:

答案 0 :(得分:0)

尝试在OnCreate之前覆盖onNewIntent:

@覆盖

protected void onNewIntent(Intent intent){

super.onNewIntent(intent);

setIntent(intent);

}

答案 1 :(得分:0)

使用安装版本v.1.3解决,vhich解决此问题: https://github.com/brodysoft/Cordova-SQLitePlugin