Измените конфигурацию приложения вне приложения:

Я хочу изменить конфигурацию приложения для сервера соединений, где у меня есть два варианта: Test, Production. Это устанавливается с помощью статической строки внутри одного из моих вспомогательных классов.

Теперь я хочу внести это изменение вне приложения, используя другой значок в системе. Причина этого в том, что я не хочу, чтобы пользователь мог это сделать (и я не хочу, чтобы это было частью моего приложения). Только команда разработчиков, которая должна проверить приложение в полевых условиях, может добавить этот значок и внести это изменение.

Поэтому я не хочу создавать какой-то виджет, который будет установлен вместе с моим приложением.

Есть ли способ сделать что-то подобное? Если да, то как это можно сделать? Должен ли я сделать для этого совершенно новое приложение?

Спасибо.


person Emil Adz    schedule 19.11.2013    source источник


Ответы (2)


вы можете установить этот параметр в SharedPreferences и создать действие для команды разработчиков, чтобы установить его, с параметром LAUNCHER в манифесте, чтобы у него был значок запуска.

что вы можете сделать, чтобы скрыть это от своих пользователей, так это удалить это действие из манифеста для выпускных сборок.

если вы используете Android Studio/Gradle, вы можете использовать разные файлы AndroidManifest.xml для разных типов сборки, см. Как указать Gradle использовать другой AndroidManifest из командной строки?

person Gal Ben-Haim    schedule 19.11.2013
comment
Если я создам два действия с фильтром намерений LAUNCHER в файле манифеста, он создаст два значка запуска, каждый из которых ведет к указанному действию одного и того же приложения? - person Emil Adz; 19.11.2013
comment
Да, это будет. Android создает значок для каждого действия с категорией LAUNCHER. подробнее об этом читайте здесь — developer.android.com/guide/components/intents- фильтры.html - person Gal Ben-Haim; 19.11.2013

В итоге я использовал Url Scheme, для этой задачи дополнительную информацию можно найти здесь:

настраиваемая схема URL-адресов Android..?

И код в моем файле манифеста в основном действии я предоставил следующий фильтр намерений:

  <intent-filter>
     <action android:name="android.intent.action.VIEW" />
     <category android:name="android.intent.category.DEFAULT" />
     <category android:name="android.intent.category.BROWSABLE" />
     <data android:scheme="myapp" android:host="com.myhost" />
  </intent-filter>

И в самой деятельности я делаю это:

    Intent intent = getIntent();
    String value = null;
    if (intent.getData() != null)
    {
        value = intent.getData().getQueryParameter("server"); 
    }
    if (value != null)
    {
        Log.d(TAG, "with scheme value: "+ value);
        if (value.equals("my_test_server_address"))
        {
            Toast.makeText(this, "Server set to Test" , Toast.LENGTH_LONG).show();
        }
        else if (value.equals("my_production_server_address"))
        {
            Toast.makeText(this, "Server set to Production" , Toast.LENGTH_LONG).show();
        }
        else
        {   
            Toast.makeText(this, "Server set to Address: "+ value , Toast.LENGTH_LONG).show();
        }
        Consts.BASE_URL = Uri.parse(value);
    }
    else
    {
        Log.d(TAG, "value was null");
    }

Наконец, чтобы запустить приложение с этим фильтром намерений, вам нужно создать файл HTML со следующим кодом:

<a href="myapp://com.myhost?server=my_test_server_address">test</a>
<a href="myapp://com.myhost?server=my_production_server_address">production</a>
person Emil Adz    schedule 03.12.2013
comment
вы спрашивали о добавлении дополнительного значка в панель запуска и получили на это ответ, пожалуйста, отметьте его как принятый, а не отмечайте свой собственный ответ, который не отвечает на вопрос - person Gal Ben-Haim; 08.12.2013
comment
@GalBen-Haim, я спросил об изменении конфигурации приложения вне приложения, я также указал, что: и я не хочу, чтобы это было частью моего приложения... Возможно, ваше решение подходит для моего вопроса, но у меня есть чтобы поддерживать его все время .... с другой стороны, с помощью схемы URL я просто добавил ярлык на веб-страницу на одном из своих рабочих столов, и он отлично работает. Так что на самом деле это лучшее решение того, о чем я спрашивал, тогда как вы предложили. Теперь, пожалуйста, уберите отрицательный голос, не нужно злиться. - person Emil Adz; 08.12.2013