Метод вызова Android из другого приложения

У меня есть 2 приложения для Android. Оба установлены на телефоне. Допустим, что имя пакета для двух: com.android.test1 и com.android.test2. Как я могу вызвать метод Main2method() из класса test1.Main?

Класс для test1:

package com.android.test1;
import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {  

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Класс для test2:

package com.android.test2;
import android.app.Activity;
import android.os.Bundle;

public class Main2 extends Activity {  

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public static void Main2method() {
        //do something..
    }
}

Ответ 1

Может быть, вы можете передать намерение позвонить.

Intent it = new Intent("com.android.test2.Main2method");
context.sendBroadcast(it)

Сделайте BroadcastReceiver в com.android.test2.Main2 для получения трансляции:

public class ActionReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("com.android.test2.Main2method".equalsIgnoreCase(intent.getAction())) {
            Main2method();
        } 
    }
}

Зарегистрируйте приемник в onCreate метод класса Main1:

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

    receiver = new ActionReceiver();
    IntentFilter filter = new IntentFilter();
    filter.addAction("com.android.test2.Main2method");
    registerReceiver(receiver, filter);
    ...
}

Ответ 2

Если вы хотите отправлять обратные вызовы из app1 в app2:

  • вы должны отправить свой собственный Intent с данными из приложения 1. (взгляните на PendingIntent).
  • в yout app2 вы должны зарегистрировать BroadcastReceiver, который будет обрабатывать ваш app1 Intents.
  • метод broadcastreceiver onReceive (в приложении 2) будет вызываться каждый раз, когда ваш намерение будет выведен на app1 и уловлен приложением2. (поставьте свои логики там)

Ответ 3

чтобы вызвать метод между различными приложениями, которые вам нужно использовать, Intent

вам также понадобится фильтр намерений  и BroadcastReceiver

Ответ 4

Вы не можете напрямую вызывать метод одного приложения из другого приложения. Вместо этого вы должны вызывать одно действие из другого и получать результат с помощью Intent-фильтров.

Эти ссылки могут помочь вам

http://www.vogella.com/articles/AndroidIntent/article.html

http://saigeethamn.blogspot.in/2009/08/android-developer-tutorial-for_31.html