我对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),该怎么做?我已经将函数设置为静态,并将变量“ devicePolicyManager”和“ demoDeviceAdmin”设置为静态,但是我无法启动活动性...
有人可以帮助我吗?
谢谢
最佳答案
首先,您不能从startActivityForResult()
调用Service
。充其量,您可以从startActivity()
调用Service
。
其次,您不能从startActivity()
方法调用startActivityForResult()
(或static
),除非在Context
(或Activity
的startActivityForResult()
)上调用它,因为它们不是static
方法。
关于java - 在服务中使用startActivityForResult启动 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23659729/