diff --git a/app/build.gradle b/app/build.gradle index b7cdf0a..63203fe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,8 +22,10 @@ android { productFlavors { regular { + buildConfigField "boolean", "HIDDEN_APP", "false" } hidden { + buildConfigField "boolean", "HIDDEN_APP", "true" } } diff --git a/app/src/hidden/AndroidManifest.xml b/app/src/hidden/AndroidManifest.xml index 204348f..e497687 100644 --- a/app/src/hidden/AndroidManifest.xml +++ b/app/src/hidden/AndroidManifest.xml @@ -2,10 +2,18 @@ + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5365632..690b06d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,13 +16,16 @@ android:label="@string/app_name" android:theme="@style/TraccarTheme"> - + + + - + diff --git a/app/src/main/java/org/traccar/client/DialLaunchReceiver.java b/app/src/main/java/org/traccar/client/DialLaunchReceiver.java new file mode 100644 index 0000000..86b5db7 --- /dev/null +++ b/app/src/main/java/org/traccar/client/DialLaunchReceiver.java @@ -0,0 +1,37 @@ +/* + * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.client; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class DialLaunchReceiver extends BroadcastReceiver { + + private static final String LAUNCHER_NUMBER = "8722227"; // TRACCAR + + @Override + public void onReceive(Context context, Intent intent) { + String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); + if (phoneNumber.equals(LAUNCHER_NUMBER)) { + setResultData(null); + Intent appIntent = new Intent(context, MainActivity.class); + appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(appIntent); + } + } + +} diff --git a/app/src/main/java/org/traccar/client/MainActivity.java b/app/src/main/java/org/traccar/client/MainActivity.java index bbde886..afe5344 100644 --- a/app/src/main/java/org/traccar/client/MainActivity.java +++ b/app/src/main/java/org/traccar/client/MainActivity.java @@ -18,6 +18,7 @@ package org.traccar.client; import android.Manifest; import android.app.AlertDialog; import android.app.Dialog; +import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -59,6 +60,11 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + if (BuildConfig.HIDDEN_APP) { + removeLauncherIcon(); + } + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); addPreferencesFromResource(R.xml.preferences); initPreferences(); @@ -68,6 +74,21 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen } } + private void removeLauncherIcon() { + ComponentName componentName = new ComponentName(getPackageName(), getPackageName() + ".Launcher"); + PackageManager packageManager = getPackageManager(); + if (packageManager.getComponentEnabledSetting(componentName) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + packageManager.setComponentEnabledSetting( + componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.hidden_alert)); + builder.setPositiveButton(android.R.string.ok, null); + builder.show(); + } + } + private boolean hasPermission(String permission) { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { return true; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c4c055b..88e0020 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,7 +2,6 @@ Traccar Client - Device Settings Traccar Device identifier @@ -41,4 +40,7 @@ Location update Connectivity change + Device Settings + The app has been hidden from the phone launcher. To open it again please dial 8722227 (TRACCAR). +