Compare commits
No commits in common. "3f76813e80102edfe247425cc385de4e75bd8d17" and "3c8c0f14f2f2e60096976adf6362bf14423003ca" have entirely different histories.
3f76813e80
...
3c8c0f14f2
@ -648,7 +648,6 @@ public class Action
|
|||||||
{
|
{
|
||||||
String username = null;
|
String username = null;
|
||||||
String password = null;
|
String password = null;
|
||||||
String method = ActivityManageActionTriggerUrl.methodGet;
|
|
||||||
String url;
|
String url;
|
||||||
|
|
||||||
String[] components = getParameter2().split(";");
|
String[] components = getParameter2().split(";");
|
||||||
@ -658,9 +657,6 @@ public class Action
|
|||||||
username = components[0];
|
username = components[0];
|
||||||
password = components[1];
|
password = components[1];
|
||||||
url = components[2];
|
url = components[2];
|
||||||
|
|
||||||
if(components.length >= 4)
|
|
||||||
method = components[3];
|
|
||||||
}
|
}
|
||||||
else // compatibility for very old versions which haven't upgraded, yet.
|
else // compatibility for very old versions which haven't upgraded, yet.
|
||||||
url = components[0];
|
url = components[0];
|
||||||
@ -674,7 +670,7 @@ public class Action
|
|||||||
Miscellaneous.logEvent("i", "HTTP", "Attempting download of " + url, 4); //getResources().getString("attemptingDownloadOf");
|
Miscellaneous.logEvent("i", "HTTP", "Attempting download of " + url, 4); //getResources().getString("attemptingDownloadOf");
|
||||||
|
|
||||||
if(this.getParameter1()) // use authentication
|
if(this.getParameter1()) // use authentication
|
||||||
new DownloadTask().execute(url, username, password, method);
|
new DownloadTask().execute(url, username, password);
|
||||||
else
|
else
|
||||||
new DownloadTask().execute(url, null, null);
|
new DownloadTask().execute(url, null, null);
|
||||||
}
|
}
|
||||||
@ -696,17 +692,14 @@ public class Action
|
|||||||
|
|
||||||
String urlUsername = null;
|
String urlUsername = null;
|
||||||
String urlPassword = null;
|
String urlPassword = null;
|
||||||
String method = ActivityManageActionTriggerUrl.methodGet;
|
|
||||||
if(parameters.length >= 3)
|
if(parameters.length >= 3)
|
||||||
{
|
{
|
||||||
urlUsername = parameters[1];
|
urlUsername=parameters[1];
|
||||||
urlPassword = parameters[2];
|
urlPassword=parameters[2];
|
||||||
|
|
||||||
if(parameters.length >= 4)
|
|
||||||
method = parameters[3];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String response = "httpError";
|
String response = "httpError";
|
||||||
|
HttpGet post;
|
||||||
|
|
||||||
if(Settings.httpAttempts < 1)
|
if(Settings.httpAttempts < 1)
|
||||||
Miscellaneous.logEvent("w", "HTTP Request", Miscellaneous.getAnyContext().getResources().getString(R.string.cantDownloadTooFewRequestsInSettings), 3);
|
Miscellaneous.logEvent("w", "HTTP Request", Miscellaneous.getAnyContext().getResources().getString(R.string.cantDownloadTooFewRequestsInSettings), 3);
|
||||||
@ -717,9 +710,9 @@ public class Action
|
|||||||
|
|
||||||
// Either thorough checking or no encryption
|
// Either thorough checking or no encryption
|
||||||
if(!Settings.httpAcceptAllCertificates || !urlString.toLowerCase(Locale.getDefault()).contains("https"))
|
if(!Settings.httpAcceptAllCertificates || !urlString.toLowerCase(Locale.getDefault()).contains("https"))
|
||||||
response = Miscellaneous.downloadURL(urlString, urlUsername, urlPassword, method);
|
response = Miscellaneous.downloadURL(urlString, urlUsername, urlPassword);
|
||||||
else
|
else
|
||||||
response = Miscellaneous.downloadURLwithoutCertificateChecking(urlString, urlUsername, urlPassword, method);
|
response = Miscellaneous.downloadURLwithoutCertificateChecking(urlString, urlUsername, urlPassword);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,6 @@ import android.widget.CompoundButton;
|
|||||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.RadioButton;
|
|
||||||
import android.widget.TableLayout;
|
import android.widget.TableLayout;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
@ -27,16 +26,12 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
EditText etTriggerUrl, etTriggerUrlUsername, etTriggerUrlPassword;
|
EditText etTriggerUrl, etTriggerUrlUsername, etTriggerUrlPassword;
|
||||||
ListView lvTriggerUrlPostParameters;
|
ListView lvTriggerUrlPostParameters;
|
||||||
CheckBox chkTriggerUrlUseAuthentication;
|
CheckBox chkTriggerUrlUseAuthentication;
|
||||||
RadioButton rbTriggerUrlMethodGet, rbTriggerUrlMethodPost;
|
|
||||||
TableLayout tlTriggerUrlAuthentication;
|
TableLayout tlTriggerUrlAuthentication;
|
||||||
|
|
||||||
ArrayAdapter<Map<String,String>> lvTriggerUrlPostParametersAdapter;
|
ArrayAdapter<Map<String,String>> lvTriggerUrlPostParametersAdapter;
|
||||||
|
|
||||||
// private String existingUrl = "";
|
// private String existingUrl = "";
|
||||||
|
|
||||||
public static final String methodGet = "GET";
|
|
||||||
public static final String methodPost = "POST";
|
|
||||||
|
|
||||||
public static boolean edit = false;
|
public static boolean edit = false;
|
||||||
public static Action resultingAction = null;
|
public static Action resultingAction = null;
|
||||||
|
|
||||||
@ -54,9 +49,6 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
lvTriggerUrlPostParameters = (ListView)findViewById(R.id.lvTriggerUrlPostParameters);
|
lvTriggerUrlPostParameters = (ListView)findViewById(R.id.lvTriggerUrlPostParameters);
|
||||||
tlTriggerUrlAuthentication = (TableLayout)findViewById(R.id.tlTriggerUrlAuthentication);
|
tlTriggerUrlAuthentication = (TableLayout)findViewById(R.id.tlTriggerUrlAuthentication);
|
||||||
bSaveTriggerUrl = (Button)findViewById(R.id.bSaveSpeakText);
|
bSaveTriggerUrl = (Button)findViewById(R.id.bSaveSpeakText);
|
||||||
rbTriggerUrlMethodGet = (RadioButton) findViewById(R.id.rbTriggerUrlMethodGet);
|
|
||||||
rbTriggerUrlMethodPost = (RadioButton) findViewById(R.id.rbTriggerUrlMethodPost);
|
|
||||||
|
|
||||||
bSaveTriggerUrl.setOnClickListener(new OnClickListener()
|
bSaveTriggerUrl.setOnClickListener(new OnClickListener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
@ -67,8 +59,6 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
if(resultingAction == null)
|
if(resultingAction == null)
|
||||||
{
|
{
|
||||||
resultingAction = new Action();
|
resultingAction = new Action();
|
||||||
}
|
|
||||||
|
|
||||||
resultingAction.setAction(Action_Enum.triggerUrl);
|
resultingAction.setAction(Action_Enum.triggerUrl);
|
||||||
resultingAction.setParameter1(chkTriggerUrlUseAuthentication.isChecked());
|
resultingAction.setParameter1(chkTriggerUrlUseAuthentication.isChecked());
|
||||||
|
|
||||||
@ -81,17 +71,12 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
if(password == null)
|
if(password == null)
|
||||||
password = "";
|
password = "";
|
||||||
|
|
||||||
String method = methodGet;
|
|
||||||
if(rbTriggerUrlMethodPost.isChecked())
|
|
||||||
method = methodPost;
|
|
||||||
|
|
||||||
ActivityManageActionTriggerUrl.resultingAction.setParameter2(
|
ActivityManageActionTriggerUrl.resultingAction.setParameter2(
|
||||||
username + ";" +
|
username + ";" +
|
||||||
password + ";" +
|
password + ";" +
|
||||||
etTriggerUrl.getText().toString().trim() + ";" +
|
etTriggerUrl.getText().toString().trim()
|
||||||
method
|
|
||||||
);
|
);
|
||||||
|
}
|
||||||
backToRuleManager();
|
backToRuleManager();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -99,25 +84,16 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
chkTriggerUrlUseAuthentication.setOnCheckedChangeListener(new OnCheckedChangeListener()
|
chkTriggerUrlUseAuthentication.setOnCheckedChangeListener(new OnCheckedChangeListener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
|
||||||
{
|
{
|
||||||
if(isChecked)
|
if(isChecked)
|
||||||
{
|
|
||||||
tlTriggerUrlAuthentication.setVisibility(View.VISIBLE);
|
tlTriggerUrlAuthentication.setVisibility(View.VISIBLE);
|
||||||
rbTriggerUrlMethodGet.setChecked(false);
|
|
||||||
rbTriggerUrlMethodPost.setChecked(true);
|
|
||||||
rbTriggerUrlMethodGet.setEnabled(false);
|
|
||||||
rbTriggerUrlMethodPost.setEnabled(false);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
tlTriggerUrlAuthentication.setVisibility(View.GONE);
|
tlTriggerUrlAuthentication.setVisibility(View.GONE);
|
||||||
rbTriggerUrlMethodGet.setEnabled(true);
|
|
||||||
rbTriggerUrlMethodPost.setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
etTriggerUrlUsername.setEnabled(isChecked);
|
etTriggerUrlUsername.setEnabled(isChecked);
|
||||||
etTriggerUrlPassword.setEnabled(isChecked);
|
etTriggerUrlPassword.setEnabled(isChecked);
|
||||||
@ -134,6 +110,7 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
});
|
});
|
||||||
updateListView();
|
updateListView();
|
||||||
|
|
||||||
|
|
||||||
ActivityManageActionTriggerUrl.edit = getIntent().getBooleanExtra("edit", false);
|
ActivityManageActionTriggerUrl.edit = getIntent().getBooleanExtra("edit", false);
|
||||||
if(edit)
|
if(edit)
|
||||||
{
|
{
|
||||||
@ -146,20 +123,6 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
chkTriggerUrlUseAuthentication.setChecked(ActivityManageActionTriggerUrl.resultingAction.getParameter1());
|
chkTriggerUrlUseAuthentication.setChecked(ActivityManageActionTriggerUrl.resultingAction.getParameter1());
|
||||||
etTriggerUrlUsername.setText(components[0]);
|
etTriggerUrlUsername.setText(components[0]);
|
||||||
etTriggerUrlPassword.setText(components[1]);
|
etTriggerUrlPassword.setText(components[1]);
|
||||||
|
|
||||||
if(components.length >= 4)
|
|
||||||
{
|
|
||||||
switch(components[3])
|
|
||||||
{
|
|
||||||
case methodPost:
|
|
||||||
rbTriggerUrlMethodPost.setChecked(true);
|
|
||||||
break;
|
|
||||||
case methodGet:
|
|
||||||
default:
|
|
||||||
rbTriggerUrlMethodGet.setChecked(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
etTriggerUrl.setText(components[0]);
|
etTriggerUrl.setText(components[0]);
|
||||||
@ -179,17 +142,12 @@ public class ActivityManageActionTriggerUrl extends Activity
|
|||||||
if(password == null)
|
if(password == null)
|
||||||
password = "";
|
password = "";
|
||||||
|
|
||||||
String method = methodGet;
|
|
||||||
if(rbTriggerUrlMethodPost.isChecked())
|
|
||||||
method = methodPost;
|
|
||||||
|
|
||||||
ActivityManageActionTriggerUrl.resultingAction.setParameter1(chkTriggerUrlUseAuthentication.isChecked());
|
ActivityManageActionTriggerUrl.resultingAction.setParameter1(chkTriggerUrlUseAuthentication.isChecked());
|
||||||
|
|
||||||
ActivityManageActionTriggerUrl.resultingAction.setParameter2(
|
ActivityManageActionTriggerUrl.resultingAction.setParameter2(
|
||||||
username + ";" +
|
username + ";" +
|
||||||
password + ";" +
|
password + ";" +
|
||||||
etTriggerUrl.getText().toString() + ";" +
|
etTriggerUrl.getText().toString()
|
||||||
method
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ public class AsyncTasks
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String result = Miscellaneous.downloadURL("https://server47.de/automation/?action=getLatestVersionCode", null, null, ActivityManageActionTriggerUrl.methodGet).trim();
|
String result = Miscellaneous.downloadURL("https://server47.de/automation/?action=getLatestVersionCode", null, null).trim();
|
||||||
int latestVersion = Integer.parseInt(result);
|
int latestVersion = Integer.parseInt(result);
|
||||||
|
|
||||||
// At this point the update check itself has already been successful.
|
// At this point the update check itself has already been successful.
|
||||||
|
@ -44,11 +44,7 @@ import org.apache.http.HttpEntity;
|
|||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.HttpVersion;
|
import org.apache.http.HttpVersion;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.apache.http.client.methods.HttpPost;
|
import org.apache.http.client.methods.HttpPost;
|
||||||
import org.apache.http.client.methods.HttpPut;
|
|
||||||
import org.apache.http.client.methods.HttpRequestBase;
|
|
||||||
import org.apache.http.conn.ssl.SSLSocketFactory;
|
import org.apache.http.conn.ssl.SSLSocketFactory;
|
||||||
import org.apache.http.impl.client.DefaultHttpClient;
|
import org.apache.http.impl.client.DefaultHttpClient;
|
||||||
import org.apache.http.params.BasicHttpParams;
|
import org.apache.http.params.BasicHttpParams;
|
||||||
@ -124,7 +120,7 @@ public class Miscellaneous extends Service
|
|||||||
|
|
||||||
public static final String lineSeparator = System.getProperty("line.separator");
|
public static final String lineSeparator = System.getProperty("line.separator");
|
||||||
|
|
||||||
public static String downloadURL(String url, String username, String password, String method)
|
public static String downloadURL(String url, String username, String password)
|
||||||
{
|
{
|
||||||
HttpClient httpclient = new DefaultHttpClient();
|
HttpClient httpclient = new DefaultHttpClient();
|
||||||
StringBuilder responseBody = new StringBuilder();
|
StringBuilder responseBody = new StringBuilder();
|
||||||
@ -152,8 +148,6 @@ public class Miscellaneous extends Service
|
|||||||
connection.setDoOutput(true);
|
connection.setDoOutput(true);
|
||||||
connection.setRequestProperty ("Authorization", "Basic " + encodedCredentials);
|
connection.setRequestProperty ("Authorization", "Basic " + encodedCredentials);
|
||||||
}
|
}
|
||||||
else if(method.equals(ActivityManageActionTriggerUrl.methodPost))
|
|
||||||
connection.setRequestMethod("POST");
|
|
||||||
|
|
||||||
InputStream content = (InputStream)connection.getInputStream();
|
InputStream content = (InputStream)connection.getInputStream();
|
||||||
BufferedReader in = new BufferedReader (new InputStreamReader (content));
|
BufferedReader in = new BufferedReader (new InputStreamReader (content));
|
||||||
@ -180,8 +174,12 @@ public class Miscellaneous extends Service
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String downloadURLwithoutCertificateChecking(String url, String username, String password, String method)
|
public static String downloadURLwithoutCertificateChecking(String url, String username, String password)
|
||||||
{
|
{
|
||||||
|
// HttpClient httpclient = new DefaultHttpClient();
|
||||||
|
// StringBuilder responseBody = new StringBuilder();
|
||||||
|
boolean errorFound = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpParams params = new BasicHttpParams();
|
HttpParams params = new BasicHttpParams();
|
||||||
@ -190,32 +188,19 @@ public class Miscellaneous extends Service
|
|||||||
HttpClient httpclient = new DefaultHttpClient(params);
|
HttpClient httpclient = new DefaultHttpClient(params);
|
||||||
httpclient = Actions.getInsecureSslClient(httpclient);
|
httpclient = Actions.getInsecureSslClient(httpclient);
|
||||||
|
|
||||||
HttpRequestBase httpRequest;
|
HttpPost httppost = new HttpPost(url);
|
||||||
if(
|
|
||||||
method.equals(ActivityManageActionTriggerUrl.methodPost)
|
|
||||||
||
|
|
||||||
(username != null && password != null)
|
|
||||||
)
|
|
||||||
httpRequest = new HttpPost(url);
|
|
||||||
else
|
|
||||||
httpRequest = new HttpGet(url);
|
|
||||||
/*httpRequest = new HttpEntityEnclosingRequestBase()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String getMethod()
|
|
||||||
{
|
|
||||||
return "GET";
|
|
||||||
}
|
|
||||||
};*/
|
|
||||||
|
|
||||||
// Add http simple authentication if specified
|
// Add http simple authentication if specified
|
||||||
if(username != null && password != null)
|
if(username != null && password != null)
|
||||||
{
|
{
|
||||||
String encodedCredentials = Base64.encodeToString(new String(username + ":" + password).getBytes(), Base64.DEFAULT);
|
String encodedCredentials = Base64.encodeToString(new String(username + ":" + password).getBytes(), Base64.DEFAULT);
|
||||||
httpRequest.addHeader("Authorization", "Basic " + encodedCredentials);
|
// List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
|
||||||
|
httppost.addHeader("Authorization", "Basic " + encodedCredentials);
|
||||||
|
// nameValuePairs.add(new BasicNameValuePair("Authorization", "Basic " + encodedCredentials));
|
||||||
|
// httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpResponse response = httpclient.execute(httpRequest);
|
HttpResponse response = httpclient.execute(httppost);
|
||||||
HttpEntity entity = response.getEntity();
|
HttpEntity entity = response.getEntity();
|
||||||
if (entity != null)
|
if (entity != null)
|
||||||
{
|
{
|
||||||
@ -226,6 +211,7 @@ public class Miscellaneous extends Service
|
|||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("e", "HTTP error", Log.getStackTraceString(e), 3);
|
Miscellaneous.logEvent("e", "HTTP error", Log.getStackTraceString(e), 3);
|
||||||
|
errorFound = true;
|
||||||
return "httpError";
|
return "httpError";
|
||||||
}
|
}
|
||||||
// finally
|
// finally
|
||||||
|
@ -79,7 +79,7 @@ public class News
|
|||||||
if (!(new File(filePath)).exists() || Settings.lastNewsPolltime == Settings.default_lastNewsPolltime || now.getTimeInMillis() >= Settings.lastNewsPolltime + (long)(Settings.newsDisplayForXDays * 24 * 60 * 60 * 1000))
|
if (!(new File(filePath)).exists() || Settings.lastNewsPolltime == Settings.default_lastNewsPolltime || now.getTimeInMillis() >= Settings.lastNewsPolltime + (long)(Settings.newsDisplayForXDays * 24 * 60 * 60 * 1000))
|
||||||
{
|
{
|
||||||
String newsUrl = "https://server47.de/automation/appNews.php";
|
String newsUrl = "https://server47.de/automation/appNews.php";
|
||||||
newsContent = Miscellaneous.downloadURL(newsUrl, null, null, ActivityManageActionTriggerUrl.methodGet);
|
newsContent = Miscellaneous.downloadURL(newsUrl, null, null);
|
||||||
|
|
||||||
// Cache content to local storage
|
// Cache content to local storage
|
||||||
if(Miscellaneous.writeStringToFile(filePath, newsContent))
|
if(Miscellaneous.writeStringToFile(filePath, newsContent))
|
||||||
|
@ -90,34 +90,6 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/method"
|
|
||||||
android:layout_marginTop="@dimen/fab_margin"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<RadioGroup
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbTriggerUrlMethodGet"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:checked="true"
|
|
||||||
android:text="@string/methodGet" />
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbTriggerUrlMethodPost"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="@dimen/default_margin"
|
|
||||||
android:text="@string/methodPost" />
|
|
||||||
|
|
||||||
</RadioGroup>
|
|
||||||
|
|
||||||
<ListView
|
<ListView
|
||||||
android:id="@+id/lvTriggerUrlPostParameters"
|
android:id="@+id/lvTriggerUrlPostParameters"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -889,7 +889,4 @@
|
|||||||
<string name="wifiTriggerDisconnectionHint">This trigger will be valid if you just disconnected from the wifi specified above OR while the service is still starting and if you\'re not connected to any wifi. If you want the trigger to fire only when you\'re explicitly disconnecting from a certain wifi, add another trigger \"service is not starting\".</string>
|
<string name="wifiTriggerDisconnectionHint">This trigger will be valid if you just disconnected from the wifi specified above OR while the service is still starting and if you\'re not connected to any wifi. If you want the trigger to fire only when you\'re explicitly disconnecting from a certain wifi, add another trigger \"service is not starting\".</string>
|
||||||
<string name="className">Class full name</string>
|
<string name="className">Class full name</string>
|
||||||
<string name="startAppByStartForegroundService">by startForegroundService()</string>
|
<string name="startAppByStartForegroundService">by startForegroundService()</string>
|
||||||
<string name="method">Method</string>
|
|
||||||
<string name="methodGet" translatable="false">GET</string>
|
|
||||||
<string name="methodPost" translatable="false">POST</string>
|
|
||||||
</resources>
|
</resources>
|
@ -1,3 +1,2 @@
|
|||||||
* Fixed: Overlay permission for start other program action only required if startByActivity() is selected
|
* Fixed: Overlay permission for start other program action only required if startByActivity() is selected
|
||||||
* Fixed: Broadcast receiver trigger would not trigger anything, but crash
|
* Fixed: Broadcast receiver trigger would not trigger anything, but crash
|
||||||
* Added: One can now choose between GET and POST when using triggerURL action
|
|
Loading…
Reference in New Issue
Block a user