forked from jens/Automation
Start app changed
This commit is contained in:
parent
22533fcfee
commit
769f227689
@ -373,7 +373,7 @@ public class Action
|
|||||||
Actions.setDisplayRotation(context, getParameter1(), toggleActionIfPossible);
|
Actions.setDisplayRotation(context, getParameter1(), toggleActionIfPossible);
|
||||||
break;
|
break;
|
||||||
case startOtherActivity:
|
case startOtherActivity:
|
||||||
Actions.startOtherActivity(getParameter2());
|
Actions.startOtherActivity(getParameter1(), getParameter2());
|
||||||
break;
|
break;
|
||||||
case waitBeforeNextAction:
|
case waitBeforeNextAction:
|
||||||
Actions.waitBeforeNextAction(Long.parseLong(this.getParameter2()));
|
Actions.waitBeforeNextAction(Long.parseLong(this.getParameter2()));
|
||||||
|
@ -568,35 +568,56 @@ public class Actions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void startOtherActivity(String param)
|
public static void startOtherActivity(boolean byActivity, String param)
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("i", "StartOtherActivity", "Starting other Activity...", 4);
|
Miscellaneous.logEvent("i", "StartOtherActivity", "Starting other Activity...", 4);
|
||||||
|
|
||||||
String packageName, className;
|
|
||||||
|
|
||||||
String params[] = param.split(";");
|
String params[] = param.split(";");
|
||||||
|
|
||||||
packageName = params[0];
|
|
||||||
className = params[1];
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Starting " + packageName + " " + className, 3);
|
Intent externalActivityIntent;
|
||||||
Intent externalActivityIntent = new Intent(Intent.ACTION_MAIN);
|
|
||||||
externalActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
externalActivityIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
|
||||||
|
|
||||||
if(packageName.equals("dummyPkg"))
|
int paramsStartIndex;
|
||||||
externalActivityIntent.setAction(className);
|
|
||||||
else
|
|
||||||
externalActivityIntent.setClassName(packageName, className);
|
|
||||||
|
|
||||||
if(Miscellaneous.doesActivityExist(externalActivityIntent, Miscellaneous.getAnyContext()))
|
if(byActivity)
|
||||||
{
|
{
|
||||||
// has intent values to deliver
|
// selected by activity
|
||||||
for (int i = 2; i < params.length; i++)
|
|
||||||
{
|
String packageName, className;
|
||||||
String[] singleParam = params[i].split("/");
|
|
||||||
|
packageName = params[0];
|
||||||
|
className = params[1];
|
||||||
|
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Starting app by activity: " + packageName + " " + className, 3);
|
||||||
|
|
||||||
|
paramsStartIndex = 2;
|
||||||
|
|
||||||
|
externalActivityIntent = new Intent(Intent.ACTION_MAIN);
|
||||||
|
externalActivityIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||||
|
|
||||||
|
// if(packageName.equals("dummyPkg"))
|
||||||
|
// externalActivityIntent.setAction(className);
|
||||||
|
// else
|
||||||
|
externalActivityIntent.setClassName(packageName, className);
|
||||||
|
|
||||||
|
if(!Miscellaneous.doesActivityExist(externalActivityIntent, Miscellaneous.getAnyContext()))
|
||||||
|
Miscellaneous.logEvent("w", "StartOtherApp", "Activity not found: " + className, 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// selected by action
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Starting app by action: " + param, 3);
|
||||||
|
paramsStartIndex = 1;
|
||||||
|
externalActivityIntent = new Intent(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
externalActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
|
||||||
|
// Pack intents
|
||||||
|
for (int i = paramsStartIndex = 2; i < params.length; i++)
|
||||||
|
{
|
||||||
|
String[] singleParam = params[i].split("/");
|
||||||
|
|
||||||
/*Class c = Class.forName(singleParam[0]);
|
/*Class c = Class.forName(singleParam[0]);
|
||||||
for(Method m : c.getMethods())
|
for(Method m : c.getMethods())
|
||||||
@ -608,68 +629,64 @@ public class Actions
|
|||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (singleParam[0].equals("boolean"))
|
if (singleParam[0].equals("boolean"))
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
externalActivityIntent.putExtra(singleParam[1], Boolean.parseBoolean(singleParam[2]));
|
externalActivityIntent.putExtra(singleParam[1], Boolean.parseBoolean(singleParam[2]));
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("byte"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], Byte.parseByte(singleParam[2]));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("char"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], singleParam[2].charAt(0));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("CharSequence"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], (CharSequence) singleParam[2]);
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("double"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], Double.parseDouble(singleParam[2]));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("float"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], Float.parseFloat(singleParam[2]));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("int"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], Integer.parseInt(singleParam[2]));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("long"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], Long.parseLong(singleParam[2]));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("short"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], Short.parseShort(singleParam[2]));
|
|
||||||
}
|
|
||||||
else if (singleParam[0].equals("String"))
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
externalActivityIntent.putExtra(singleParam[1], singleParam[2]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Miscellaneous.logEvent("w", "StartOtherApp", "Unknown type of parameter " + singleParam[0] + " found. Name " + singleParam[1] + " and value " + singleParam[2], 3);
|
|
||||||
}
|
}
|
||||||
|
else if (singleParam[0].equals("byte"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], Byte.parseByte(singleParam[2]));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("char"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], singleParam[2].charAt(0));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("CharSequence"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], (CharSequence) singleParam[2]);
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("double"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], Double.parseDouble(singleParam[2]));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("float"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], Float.parseFloat(singleParam[2]));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("int"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], Integer.parseInt(singleParam[2]));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("long"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], Long.parseLong(singleParam[2]));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("short"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], Short.parseShort(singleParam[2]));
|
||||||
|
}
|
||||||
|
else if (singleParam[0].equals("String"))
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
externalActivityIntent.putExtra(singleParam[1], singleParam[2]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Miscellaneous.logEvent("w", "StartOtherApp", "Unknown type of parameter " + singleParam[0] + " found. Name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||||
|
}
|
||||||
|
|
||||||
autoMationServerRef.startActivity(externalActivityIntent);
|
// autoMationServerRef.sendBroadcast(externalActivityIntent);
|
||||||
}
|
autoMationServerRef.startActivity(externalActivityIntent);
|
||||||
else
|
|
||||||
{
|
|
||||||
Miscellaneous.logEvent("w", "StartOtherApp", "Activity not found: " + className, 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch(ActivityNotFoundException | SecurityException e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
Miscellaneous.logEvent("e", "StartOtherApp", autoMationServerRef.getResources().getString(R.string.errorStartingOtherActivity) + ": " + Log.getStackTraceString(e), 2);
|
Miscellaneous.logEvent("e", "StartOtherApp", autoMationServerRef.getResources().getString(R.string.errorStartingOtherActivity) + ": " + Log.getStackTraceString(e), 2);
|
||||||
Toast.makeText(autoMationServerRef, autoMationServerRef.getResources().getString(R.string.errorStartingOtherActivity) + ": " + e.getMessage(), Toast.LENGTH_LONG).show();
|
Toast.makeText(autoMationServerRef, autoMationServerRef.getResources().getString(R.string.errorStartingOtherActivity) + ": " + e.getMessage(), Toast.LENGTH_LONG).show();
|
||||||
|
@ -24,6 +24,7 @@ import android.widget.ArrayAdapter;
|
|||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
import android.widget.RadioButton;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -43,6 +44,7 @@ public class ActivityManageActionStartActivity extends Activity
|
|||||||
Spinner spinnerParameterType;
|
Spinner spinnerParameterType;
|
||||||
boolean edit = false;
|
boolean edit = false;
|
||||||
ProgressDialog progressDialog = null;
|
ProgressDialog progressDialog = null;
|
||||||
|
RadioButton rbStartAppSelectByActivity, rbStartAppSelectByAction;
|
||||||
|
|
||||||
private class CustomPackageInfo extends PackageInfo implements Comparable<CustomPackageInfo>
|
private class CustomPackageInfo extends PackageInfo implements Comparable<CustomPackageInfo>
|
||||||
{
|
{
|
||||||
@ -289,6 +291,8 @@ public class ActivityManageActionStartActivity extends Activity
|
|||||||
bSaveActionStartOtherActivity = (Button)findViewById(R.id.bSaveActionStartOtherActivity);
|
bSaveActionStartOtherActivity = (Button)findViewById(R.id.bSaveActionStartOtherActivity);
|
||||||
spinnerParameterType = (Spinner)findViewById(R.id.spinnerParameterType);
|
spinnerParameterType = (Spinner)findViewById(R.id.spinnerParameterType);
|
||||||
etSelectedActivity = (EditText) findViewById(R.id.etSelectedApplication);
|
etSelectedActivity = (EditText) findViewById(R.id.etSelectedApplication);
|
||||||
|
rbStartAppSelectByActivity = (RadioButton)findViewById(R.id.rbStartAppSelectByActivity);
|
||||||
|
rbStartAppSelectByAction = (RadioButton)findViewById(R.id.rbStartAppSelectByAction);
|
||||||
|
|
||||||
intentTypeSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, ActivityManageActionStartActivity.supportedIntentTypes);
|
intentTypeSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, ActivityManageActionStartActivity.supportedIntentTypes);
|
||||||
spinnerParameterType.setAdapter(intentTypeSpinnerAdapter);
|
spinnerParameterType.setAdapter(intentTypeSpinnerAdapter);
|
||||||
@ -407,25 +411,37 @@ public class ActivityManageActionStartActivity extends Activity
|
|||||||
|
|
||||||
private void loadValuesIntoGui()
|
private void loadValuesIntoGui()
|
||||||
{
|
{
|
||||||
|
boolean selectionByActivity = resultingAction.getParameter1();
|
||||||
|
rbStartAppSelectByActivity.setChecked(selectionByActivity);
|
||||||
|
rbStartAppSelectByAction.setChecked(!selectionByActivity);
|
||||||
|
|
||||||
String[] params = resultingAction.getParameter2().split(";");
|
String[] params = resultingAction.getParameter2().split(";");
|
||||||
if(params.length >= 2)
|
|
||||||
{
|
if(selectionByActivity)
|
||||||
etSelectedActivity.setText(params[0] + ";" + params[1]);
|
etSelectedActivity.setText(params[0] + ";" + params[1]);
|
||||||
|
else
|
||||||
|
etSelectedActivity.setText(params[0]);
|
||||||
|
|
||||||
if(params.length > 2)
|
int startIndex = -1;
|
||||||
|
|
||||||
|
if(selectionByActivity && params.length >= 2)
|
||||||
|
startIndex = 2;
|
||||||
|
else if(!selectionByActivity && params.length >= 1)
|
||||||
|
startIndex = 1;
|
||||||
|
|
||||||
|
if(startIndex > -1 && params.length > startIndex)
|
||||||
|
{
|
||||||
|
intentPairList.clear();
|
||||||
|
|
||||||
|
for(int i=startIndex; i<params.length; i++)
|
||||||
{
|
{
|
||||||
intentPairList.clear();
|
if(lvIntentPairs.getVisibility() != View.VISIBLE)
|
||||||
|
lvIntentPairs.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
for(int i=2; i<params.length; i++)
|
intentPairList.add(params[i]);
|
||||||
{
|
|
||||||
if(lvIntentPairs.getVisibility() != View.VISIBLE)
|
|
||||||
lvIntentPairs.setVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
intentPairList.add(params[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
updateIntentPairList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateIntentPairList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,14 +480,16 @@ public class ActivityManageActionStartActivity extends Activity
|
|||||||
if(resultingAction == null)
|
if(resultingAction == null)
|
||||||
resultingAction = new Action();
|
resultingAction = new Action();
|
||||||
|
|
||||||
|
resultingAction.setParameter1(rbStartAppSelectByActivity.isChecked());
|
||||||
|
|
||||||
resultingAction.setAction(Action_Enum.startOtherActivity);
|
resultingAction.setAction(Action_Enum.startOtherActivity);
|
||||||
|
|
||||||
String parameter2;
|
String parameter2;
|
||||||
|
|
||||||
if(etSelectedActivity.getText().toString().contains(";"))
|
// if(etSelectedActivity.getText().toString().contains(";"))
|
||||||
parameter2 = etSelectedActivity.getText().toString();
|
parameter2 = etSelectedActivity.getText().toString();
|
||||||
else
|
// else
|
||||||
parameter2 = "dummyPkg;" + etSelectedActivity.getText().toString();
|
// parameter2 = "dummyPkg;" + etSelectedActivity.getText().toString();
|
||||||
|
|
||||||
for(String s : intentPairList)
|
for(String s : intentPairList)
|
||||||
parameter2 += ";" + s;
|
parameter2 += ";" + s;
|
||||||
|
@ -1225,6 +1225,22 @@ public class XmlFileInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(newAction.getAction().equals(Action_Enum.startOtherActivity)) // read old entries where parameter1 was not in use, yet to distinguish between call by activity and call by action
|
||||||
|
{
|
||||||
|
String[] contents = tag.split(";");
|
||||||
|
|
||||||
|
if(contents.length == 1)
|
||||||
|
newAction.setParameter1(false);
|
||||||
|
else if(contents.length == 2)
|
||||||
|
{
|
||||||
|
if(contents[1].contains("/"))
|
||||||
|
newAction.setParameter1(false);
|
||||||
|
else
|
||||||
|
newAction.setParameter1(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
newAction.setParameter2(tag);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
newAction.setParameter2(tag);
|
newAction.setParameter2(tag);
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,38 @@
|
|||||||
|
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
|
<TableRow
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text="@string/startAppSelectionType" />
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rbStartAppSelectByActivity"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/startAppByActivity" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rbStartAppSelectByAction"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/startAppByAction" />
|
||||||
|
|
||||||
|
</RadioGroup>
|
||||||
|
|
||||||
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
@ -640,4 +640,7 @@
|
|||||||
<string name="cantFindSoundFile">Cannot find sound file %1$s and therefore not play it.</string>
|
<string name="cantFindSoundFile">Cannot find sound file %1$s and therefore not play it.</string>
|
||||||
<string name="addParameters">Add parameters</string>
|
<string name="addParameters">Add parameters</string>
|
||||||
<string name="com.wireguard.android.permission.CONTROL_TUNNELS">Control tunnels of the wireguard app</string>
|
<string name="com.wireguard.android.permission.CONTROL_TUNNELS">Control tunnels of the wireguard app</string>
|
||||||
|
<string name="startAppSelectionType">Method to\nselect application</string>
|
||||||
|
<string name="startAppByActivity">by activity</string>
|
||||||
|
<string name="startAppByAction">by action</string>
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in New Issue
Block a user