Получите дополнительные возможности в приложении Cordova

У нас есть два приложения для Android: одно реализовано с использованием нативной Java, а другое — с использованием Ionic. Приложение Ionic запускает мое приложение для Android с помощью плагина lampaa. Я мог бы получить дополнительные возможности, которые предоставляет приложение Ionic, используя следующий код:

String keyid = getIntent().getStringExtra("keyid");

Прежде чем я выйду из своего приложения, я хотел бы отправить дополнения в приложение Ionic. Это легко сделать со стороны Android. Как приложение Ionic узнает, что мое приложение передало ему управление, и как оно может получить отправленные мной дополнения?


person Sandah Aung    schedule 30.08.2016    source источник


Ответы (3)


Я думаю, что в вашем случае, чтобы получить дополнительные возможности из вашего собственного приложения, вам нужно использовать другой плагин, например cordova-plugin. -намерение.

Например :

    //To get the intent and extras when the app it's open for the first time
    window.plugins.intent.getCordovaIntent (function (intent) {
        intenthandler(intent);
    });

    //To get the intent and extras if the app is running in the background
    window.plugins.intent.setNewIntentHandler (function (intent) {
        intenthandler(intent);
    });

    //To handle the params
    var intenthandler = function (intent) {
          if (intent && intent.extras && intent.extras.myParams) {
        //Do something
          }
    };

Для получения дополнительной помощи посетите здесь.

Надеюсь, это поможет вам!!

person Santosh Shinde    schedule 30.08.2016

Чтобы добавить, в случае веб-намерений вы можете использовать следующие плагины, которые помогают получить дополнительные сведения и информацию об URL.

У него также есть другие методы, такие как startActivity и sendBroadcast.

person Gandhi    schedule 30.08.2016

Мне тоже нужно было сделать что-то подобное. Сначала я боролся, но теперь я нашел решение, рад поделиться этой информацией, это может быть полезно для других.

Сначала вам нужно написать плагин Cordova, этот плагин должен иметь реализацию BroadcastReceiver, как показано ниже.

public class IntentReceiver extends BroadcastReceiver {
public static final String EXTRA_NAME = "message";
@Override
    public void onReceive(Context ctx, Intent intent) {
try{
Intent mainIntent = new Intent(ctx, Class.forName(ctx.getPackageName() + ".MainActivity"));
mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
String extra = intent.getStringExtra(EXTRA_NAME);
mainIntent.putExtra("message", extra);
ctx.startActivity(mainIntent);
}catch(Exception ex){ }
}

Plugin.xml Добавьте узлы ниже в файл plugin.xml

<config-file target="AndroidManifest.xml" parent="/manifest/application">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>
        </config-file>
        <config-file parent="/manifest/application" target="AndroidManifest.xml">
            <receiver android:name="hcw.fi.phoniro.receiver.IntentReceiver" android:exported="true">
                <intent-filter android:priority="999">
                    <action android:name="android.intent.action.SEND" />
                </intent-filter>
            </receiver>
        </config-file>

htmlpage.ts Добавьте приведенный ниже код в готовую платформу

platform.ready().then(() => {

   window.plugins.intent.setNewIntentHandler(this.HandleNewIntent);
   window.plugins.intent.getCordovaIntent(this.HandleNewIntent, function ()    {
    //alert("Error: Cannot handle open with file intent");
  });

});
HandleNewIntent(intent){

      if(intent && intent.extras){  
intent.extras.myParams) {
        // Do something with the File
        document.getElementById("intentdata").innerHTML = "Data from Android app : " +intent.extras.message;
      }else{
        // this will happen in getCordovaIntent when the app starts and there's no
        // active intent
        console.log("The app was opened manually and there's not file to open");
        //alert('The app was opened manually and there is not file to open' + intent);
      }
  }
person Dheeraj Waghmode    schedule 29.01.2017
comment
Можете ли вы объяснить больше? - person Aditya Rohilla; 12.07.2019