Поэтому я создал приложение, которое работает как замена экрана блокировки. Я использую широковещательный приемник и службу, чтобы начать свою деятельность после Intent.ACTION_SCREEN_OFF
. Так что каждый раз, когда пользователь блокирует экран, начинается моя активность, затем, когда они нажимают кнопку разблокировки, моя активность уже работает на экране блокировки. Но это работает только в том случае, если пользователь пытается разбудить/разблокировать телефон через короткий промежуток времени. Если они будут ждать слишком долго, активность исчезнет. Я не уверен, почему это происходит и что я могу сделать, чтобы сохранить активность, независимо от того, как долго пользователь ждет, чтобы попытаться разблокировать свой телефон.
Я подумал и попытался прослушать Intent.ACTION_SCREEN_ON
, но затем возникает задержка между моментом, когда пользователь нажимает кнопку питания на своем телефоне, чтобы разбудить его, и моментом, когда приложение загружается и отображается на экране. Во время этого промежутка пользователь может видеть ОС Android
. Я пытаюсь выполнить рабочий процесс для записей, выбранных в представлении, с помощью кнопки на ленте. У меня есть рабочий пример использования «устаревших» сервисов для совместимости с CRM 4 :
function invokeWorkflow(workflowId, entityId) {
var request =
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
GenerateAuthenticationHeader() +
' <soap:Body>' +
' <Execute xmlns="http://schemas.microsoft.com/crm/2007/WebServices">' +
' <Request xsi:type="ExecuteWorkflowRequest">' +
' <EntityId>' + entityId + '</EntityId>' +
' <WorkflowId>' + workflowId + '</WorkflowId>' +
' </Request>' +
' </Execute>' +
' </soap:Body>' +
'</soap:Envelope>';
var xhr = new XMLHttpRequest();
xhr.open('POST', '/MSCRMservices/2007/crmservice.asmx', false);
xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xhr.setRequestHeader('SOAPAction', 'http://schemas.microsoft.com/crm/2007/WebServices/Execute');
xhr.send(request);
}
. Однако я хочу написать это, используя службы CRM 2011, чтобы повысить удобство сопровождения для будущих выпусков. Вот что я пробовал до сих пор, но это не работает -код возврата вызова HTTP 500 (Внутренняя ошибка сервера ).
function invokeWorkflow(workflowId, entityId) {
var request =
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
' <soap:Body>' +
' <Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">' +
' <Request xsi:type="ExecuteWorkflowRequest">' +
' <EntityId>' + entityId + '</EntityId>' +
' <WorkflowId>' + workflowId + '</WorkflowId>' +
' </Request>' +
' </Execute>' +
' </soap:Body>' +
'</soap:Envelope>';
var xhr = new XMLHttpRequest();
xhr.open('POST', '/XRMServices/2011/Organization.svc/web', true);
xhr.setRequestHeader('Accept', 'application/xml, text/xml, */*');
xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xhr.setRequestHeader('SOAPAction', 'http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute');
xhr.onreadystatechange = function () { alert(xhr.status); };
xhr.send(request);
}
Кто-нибудь знает, что не так со вторым скриптом?Я пытался найти это в Google как можно лучше, но каждый найденный мной пример, который утверждает, что он предназначен для CRM 2011, на самом деле просто использует службы совместимости CRM 4 (, как и в первом примере ). Второй пример я взял из образца из CRM 2011 SDK, хотя он не включает в себя пример объекта ExecuteWorkflowRequest, поэтому лучше -только предположить.
Спасибо!