在服务中使用startActivityForResult启动活动

时间:2014-05-14 16:02:42

标签: java android service static android-activity

我遇到了startActivityForResult函数的问题。

我有一个行为MqttClientActivity

public class MqttClientActivity extends Activity {

    static final int ACTIVATION_REQUEST = 47; // identifies our request id

    private static Context context;

    static DevicePolicyManager devicePolicyManager;
    static ComponentName demoDeviceAdmin;

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

        MqttClientActivity.context = getApplicationContext();

        // Initialize Device Policy Manager service and our receiver class
        devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        demoDeviceAdmin = new ComponentName(this, DemoDeviceAdminReceiver.class);
    }

    public static void test() {
        boolean active = devicePolicyManager.isAdminActive(demoDeviceAdmin);
        if (active) {
                         //do something...
        }
        else {
            // Activate device administration
            Intent intent = new Intent(
                    DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
                    demoDeviceAdmin);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                    "Your boss told you to do this");
            startActivityForResult(intent, ACTIVATION_REQUEST);
        }
    }
}

我有这堂课:

https://github.com/dobermai/android-mqtt-push/blob/master/src/de/eclipsemagazin/mqtt/push/MQTTService.java

然后:

https://github.com/dobermai/android-mqtt-push/blob/master/src/de/eclipsemagazin/mqtt/push/PushCallback.java

在后一类中,在messageArrived函数中我想调用我的测试函数(MqttClientActivity),我该怎么做呢?我已经将函数设置为static和variables" devicePolicyManager"和#34; demoDeviceAdmin"静止的,但我无法启动活动...

任何人都可以帮助我?

由于

1 个答案:

答案 0 :(得分:2)

首先,您无法从startActivityForResult()致电Service。最好,您可以从startActivity()

致电Service

其次,您无法通过startActivity()方法拨打startActivityForResult()(或static),除非在Context上调用ActivitystartActivityForResult() { {1}}),因为那些不是static方法。

相关问题