为什么调用扩展Activity的类在从插件扩展时调用时不起作用?

时间:2014-08-15 04:17:55

标签: java android phonegap-plugins

我有一个扩展插件(PhoneGap)的java类,但是在这个类中,我调用了另一个扩展 Activity 的类,它只是不起作用! 。我的意思是,它似乎没有被调用。为了确认这一点,我已经改变了我的第二堂课,这一次,没有从活动延伸,它运作正常。我需要第二个从Activity扩展,因为我使用这两个实用程序(getFileStreamPath和openFileOutput)来创建一个文件

文件filepath = getFileStreamPath(“filename.CPCL”);和openFileOutput FileOutputStream os = this.openFileOutput(fileName,Context.MODE_PRIVATE);

1 个答案:

答案 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
        } 
    }
};

其他人可能从框架的角度指出为什么这是必要的,但这是我理解应该调用活动的方式。我希望这适用于你的插件类,就像它对我的服务类一样!