我有一个扩展插件(PhoneGap)的java类,但是在这个类中,我调用了另一个扩展 Activity 的类,它只是不起作用! 。我的意思是,它似乎没有被调用。为了确认这一点,我已经改变了我的第二堂课,这一次,没有从活动延伸,它运作正常。我需要第二个从Activity扩展,因为我使用这两个实用程序(getFileStreamPath和openFileOutput)来创建一个文件
文件filepath = getFileStreamPath(“filename.CPCL”);和openFileOutput FileOutputStream os = this.openFileOutput(fileName,Context.MODE_PRIVATE);
答案 0 :(得分:0)
我有一个应用程序,其中包含一个自定义Service
的类,该类调用另一个扩展Activity
的类。
首先我实例化Activity。在插件类的onCreate
中使用:
// get a handle on your Application
Application app = getApplication();
Intent intent = new Intent(getApplicationContext(), YourActivity.class);
app.startActivity(intent);
这将启动您的Activity并调用标准的Lifecycle事件。
我处理与正在运行的Activity的持续通信的方式是使用Handler
从您的插件发送广播,该活动在其接收器中选择。在插件的onCreate
中:
mHandler.post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "Call the Activity");
Intent intent = new Intent(YourActivity.CALL_FROM_PLUGIN);
intent.putExtra("request", <<Any extras you might want to send through>>);
sendBroadcast(intent);
}
});
在活动I中声明变量:
public static final String CALL_FROM_PLUGIN= "CALL_FROM_PLUGIN";
然后在onCreate()
我添加了以下内容;
IntentFilter filter = new IntentFilter();
filter.addAction(CALL_FROM_PLUGIN);
registerReceiver(mBroadcastReceiver, filter);
然后实施了BroadcastReceiver
:
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "BroadcastReceiver.onReceive()");
if (CALL_FROM_PLUGIN.equals(action)) {
Log.d(TAG, "Received call from Plugin");
// DO YOUR STUFF HERE
}
}
};
其他人可能从框架的角度指出为什么这是必要的,但这是我理解应该调用活动的方式。我希望这适用于你的插件类,就像它对我的服务类一样!