Removed ip tool. Renamed package of base convert tool.

This commit is contained in:
2023-07-24 02:20:40 +08:00
parent 37d8861bbd
commit 3a787d37ec
12 changed files with 6 additions and 405 deletions

View File

@@ -21,8 +21,6 @@ android {
multiDexEnabled true
Properties buildPro = loadBuildPro()
buildConfigField "String", "ROLL_APP_ID", buildPro['rollAppId']
buildConfigField "String", "ROLL_APP_SECRET", buildPro['rollAppSecret']
}
signingConfigs {
@@ -107,8 +105,8 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.preference:preference:1.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.6.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'com.google.android.material:material:1.9.0'

View File

@@ -61,17 +61,7 @@
</intent-filter>
</activity>
<activity
android:name=".tools.ip.MainActivity"
android:exported="false"
android:theme="@style/Theme.OxygenToolbox.Default">
<intent-filter>
<action android:name="oxygentoolbox.ip" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".tools.converter.MainActivity"
android:name=".tools.baseconverter.MainActivity"
android:exported="false"
android:theme="@style/Theme.OxygenToolbox.Default">
<intent-filter>

View File

@@ -30,19 +30,12 @@
},
"activity": "com.fatapp.oxygentoolbox.tools.translation.MainActivity"
},
{
"text": {
"cn": "\u0049\u0050\u0020\u67e5\u8be2",
"en": "IP Query"
},
"activity": "com.fatapp.oxygentoolbox.tools.ip.MainActivity"
},
{
"text": {
"cn": "\u8fdb\u5236\u8f6c\u6362",
"en": "Base Converter"
},
"activity": "com.fatapp.oxygentoolbox.tools.converter.MainActivity"
"activity": "com.fatapp.oxygentoolbox.tools.baseconverter.MainActivity"
}
]
}

View File

@@ -1,4 +1,4 @@
package com.fatapp.oxygentoolbox.tools.converter;
package com.fatapp.oxygentoolbox.tools.baseconverter;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.os.Bundle;

View File

@@ -1,169 +0,0 @@
package com.fatapp.oxygentoolbox.tools.ip;
import android.app.AlertDialog;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.fatapp.oxygentoolbox.BuildConfig;
import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.util.ResourceUtil;
import com.fatapp.oxygentoolbox.util.http.HttpHelper;
import com.fatapp.oxygentoolbox.util.http.ResponseListener;
import com.fatapp.oxygentoolbox.util.tool.BaseActivityNormal;
import com.google.android.material.snackbar.Snackbar;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends BaseActivityNormal {
final String URL_SELF = "https://www.mxnzp.com/api/ip/self?app_id=%s&app_secret=%s";
final String URL_QUERY = "https://www.mxnzp.com/api/ip/aim_ip?ip=%s&app_id=%s&app_secret=%s";
private TextView textViewCurrentIP;
private EditText editTextIpAddress;
private ImageView imageViewQuery;
private TextView textViewResultIP;
private TextView textViewResultProvince;
private TextView textViewResultCity;
private TextView textViewResultIsp;
private void initView() {
textViewCurrentIP = findViewById(R.id.text_view_current_ip);
editTextIpAddress = findViewById(R.id.edit_text_ipaddress);
imageViewQuery = findViewById(R.id.image_view_query);
textViewResultIP = findViewById(R.id.text_view_result_ip);
textViewResultProvince = findViewById(R.id.text_view_result_province);
textViewResultCity = findViewById(R.id.text_view_result_city);
textViewResultIsp = findViewById(R.id.text_view_result_isp);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadView(this, R.layout.activity_tool_ip);
initView();
getCurrentIP();
initQuery();
}
private void getCurrentIP() {
final HttpHelper httpHelper = new HttpHelper(this, URL_SELF, new ResponseListener() {
@Override
public void onResponse(int code, String responseBody) {
if (code == 200) {
try {
if (new JSONObject(responseBody).getInt("code") == 1) {
final JSONObject data = new JSONObject(responseBody).getJSONObject("data");
String ip = data.getString("ip");
String desc = data.getString("desc");
textViewCurrentIP.setText(String.format("%s %s", ip, desc));
} else {
onFailure();
}
} catch (JSONException e) {
onFailure();
}
} else {
onFailure();
}
}
@Override
public void onFailure() {
textViewCurrentIP.setText(ResourceUtil.getString(R.string.tool_ip_Unknown));
}
});
httpHelper.request(BuildConfig.ROLL_APP_ID, BuildConfig.ROLL_APP_SECRET);
}
private void initQuery() {
editTextIpAddress.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
imageViewQuery.setEnabled(charSequence.length() != 0);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
editTextIpAddress.setOnEditorActionListener((textView, actionId, keyEvent) -> {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
query();
return true;
}
return false;
});
imageViewQuery.setEnabled(false);
imageViewQuery.setOnClickListener(view -> query());
}
private void query() {
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(editTextIpAddress.getWindowToken(), 0);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(ResourceUtil.getString(R.string.tool_ip_querying));
alertDialogBuilder.setMessage(ResourceUtil.getString(R.string.tool_ip_wait));
alertDialogBuilder.setCancelable(false);
AlertDialog alertDialog = alertDialogBuilder.show();
final HttpHelper httpHelper = new HttpHelper(this, URL_QUERY, new ResponseListener() {
@Override
public void onResponse(int code, String responseBody) {
alertDialog.cancel();
if (code == 200) {
try {
if (new JSONObject(responseBody).getInt("code") == 1) {
final JSONObject data = new JSONObject(responseBody).getJSONObject("data");
String ip = data.getString("ip");
String province = data.getString("province");
String city = data.getString("city");
String isp = data.getString("isp");
textViewResultIP.setText(ip.isEmpty() ? ResourceUtil.getString(R.string.tool_ip_Unknown) : ip);
textViewResultProvince.setText(province.isEmpty() ? ResourceUtil.getString(R.string.tool_ip_Unknown) : province);
textViewResultCity.setText(city.isEmpty() ? ResourceUtil.getString(R.string.tool_ip_Unknown) : city);
textViewResultIsp.setText(isp.isEmpty() ? ResourceUtil.getString(R.string.tool_ip_Unknown) : isp);
} else {
setUnknown();
Snackbar.make(getConstraintLayoutRoot(), new JSONObject(responseBody).getString("msg"), Snackbar.LENGTH_LONG).show();
}
} catch (JSONException e) {
onFailure();
}
} else {
onFailure();
}
}
@Override
public void onFailure() {
alertDialog.cancel();
setUnknown();
Snackbar.make(getConstraintLayoutRoot(), ResourceUtil.getString(R.string.tool_ip_query_failed), Snackbar.LENGTH_LONG).show();
}
});
httpHelper.request(editTextIpAddress.getText().toString(), BuildConfig.ROLL_APP_ID, BuildConfig.ROLL_APP_SECRET);
}
private void setUnknown() {
textViewResultIP.setText(ResourceUtil.getString(R.string.tool_ip_Unknown));
textViewResultProvince.setText(ResourceUtil.getString(R.string.tool_ip_Unknown));
textViewResultCity.setText(ResourceUtil.getString(R.string.tool_ip_Unknown));
textViewResultIsp.setText(ResourceUtil.getString(R.string.tool_ip_Unknown));
}
}

View File

@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".tools.converter.MainActivity">
tools:context=".tools.baseconverter.MainActivity">
<LinearLayout
android:id="@+id/linear_layout_base"

View File

@@ -1,167 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".tools.ip.MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout_current_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/text_view_current_ip_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tool_ip_current_IP"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/text_view_current_ip"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text_view_current_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tool_ip_Unknown"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/text_view_current_ip_tip"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:padding="@dimen/tool_ip_layout_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/constraint_layout_current_ip">
<EditText
android:id="@+id/edit_text_ipaddress"
android:layout_width="0dp"
android:layout_height="@dimen/tool_ip_query_bar_size"
android:autofillHints="ip"
android:background="@drawable/background_left_radius_border"
android:hint="@string/tool_ip_ipaddress"
android:imeOptions="actionSearch"
android:inputType="text"
android:padding="@dimen/tool_ip_layout_padding"
app:layout_constraintEnd_toStartOf="@id/image_view_query"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/image_view_query"
android:layout_width="@dimen/tool_ip_query_bar_size"
android:layout_height="@dimen/tool_ip_query_bar_size"
android:background="@drawable/foreground_right_radius"
android:clickable="true"
android:contentDescription="Query"
android:focusable="true"
android:foreground="@drawable/foreground_ripple"
android:padding="@dimen/tool_ip_layout_padding"
android:src="@drawable/ic_search"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/edit_text_ipaddress"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:orientation="vertical"
android:padding="@dimen/tool_ip_layout_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/constraint_layout_query">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_ipaddress" />
<TextView
android:id="@+id/text_view_result_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_Unknown" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_province" />
<TextView
android:id="@+id/text_view_result_province"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_Unknown" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_city" />
<TextView
android:id="@+id/text_view_result_city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_Unknown" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_isp" />
<TextView
android:id="@+id/text_view_result_isp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/tool_ip_layout_margin"
android:text="@string/tool_ip_Unknown" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -78,16 +78,6 @@
<string name="tool_translation_please_enter_text">请输入内容……</string>
<string name="tool_translation_translation_failed">翻译失败,请检查网络连接。</string>
<string name="tool_ip_current_IP">当前 IP</string>
<string name="tool_ip_Unknown">未知</string>
<string name="tool_ip_ipaddress">IP 地址</string>
<string name="tool_ip_querying">查询中</string>
<string name="tool_ip_wait">请耐心等待……</string>
<string name="tool_ip_city">城市</string>
<string name="tool_ip_province">省份</string>
<string name="tool_ip_isp">网络提供商</string>
<string name="tool_ip_query_failed">查询失败,请检查网络连接。</string>
<string name="tool_converter_choose_base">选择进制</string>
<string name="tool_converter_from_base">源进制</string>
<string name="tool_converter_to_base">目标进制</string>

View File

@@ -78,16 +78,6 @@
<string name="tool_translation_please_enter_text">请输入内容……</string>
<string name="tool_translation_translation_failed">翻译失败,请检查网络连接。</string>
<string name="tool_ip_current_IP">当前 IP</string>
<string name="tool_ip_Unknown">未知</string>
<string name="tool_ip_ipaddress">IP 地址</string>
<string name="tool_ip_querying">查询中</string>
<string name="tool_ip_wait">请耐心等待……</string>
<string name="tool_ip_city">城市</string>
<string name="tool_ip_province">省份</string>
<string name="tool_ip_isp">网络提供商</string>
<string name="tool_ip_query_failed">查询失败,请检查网络连接。</string>
<string name="tool_converter_choose_base">选择进制</string>
<string name="tool_converter_from_base">源进制</string>
<string name="tool_converter_to_base">目标进制</string>

View File

@@ -78,16 +78,6 @@
<string name="tool_translation_please_enter_text">请输入内容……</string>
<string name="tool_translation_translation_failed">翻译失败,请检查网络连接。</string>
<string name="tool_ip_current_IP">当前 IP</string>
<string name="tool_ip_Unknown">未知</string>
<string name="tool_ip_ipaddress">IP 地址</string>
<string name="tool_ip_querying">查询中</string>
<string name="tool_ip_wait">请耐心等待……</string>
<string name="tool_ip_city">城市</string>
<string name="tool_ip_province">省份</string>
<string name="tool_ip_isp">网络提供商</string>
<string name="tool_ip_query_failed">查询失败,请检查网络连接。</string>
<string name="tool_converter_choose_base">选择进制</string>
<string name="tool_converter_from_base">源进制</string>
<string name="tool_converter_to_base">目标进制</string>

View File

@@ -45,10 +45,6 @@
<dimen name="tool_translation_layout_margin">@dimen/common_layout_margin</dimen>
<dimen name="tool_translation_edit_text_view_height">200dp</dimen>
<dimen name="tool_ip_layout_padding">10dp</dimen>
<dimen name="tool_ip_layout_margin">@dimen/common_layout_margin</dimen>
<dimen name="tool_ip_query_bar_size">48dp</dimen>
<dimen name="tool_converter_text_size">16sp</dimen>
<dimen name="tool_converter_clickable_padding">5dp</dimen>
<dimen name="tool_converter_layout_margin">@dimen/common_layout_margin</dimen>

View File

@@ -115,16 +115,6 @@
<string name="tool_translation_language_korean" translatable="false">한국인</string>
<string name="tool_translation_please_enter_text">Please enter text…</string>
<string name="tool_translation_translation_failed">Translation failed, please check network connection.</string>
<string name="tool_ip_current_IP">Current IP:&#160;</string>
<string name="tool_ip_Unknown">Unknown</string>
<string name="tool_ip_ipaddress">IP address</string>
<string name="tool_ip_querying">Querying</string>
<string name="tool_ip_wait">Please wait patiently…</string>
<string name="tool_ip_city">City</string>
<string name="tool_ip_province">Province</string>
<string name="tool_ip_isp">ISP</string>
<string name="tool_ip_query_failed">Query failed, please check network connection.</string>
<string name="tool_converter_base_2" translatable="false">2 (binary)</string>
<string name="tool_converter_base_8" translatable="false">8 (octal)</string>