Метод вызова 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