长按删除单条日志记录

This commit is contained in:
pppscn 2021-03-04 16:55:39 +08:00
parent 30571834ba
commit f180ea0835
10 changed files with 340 additions and 296 deletions

View File

@ -18,6 +18,7 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
@ -44,13 +45,25 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I
private List<LogVo> logVos = new ArrayList<>(); private List<LogVo> logVos = new ArrayList<>();
private LogAdapter adapter; private LogAdapter adapter;
private ReFlashListView listView; private ReFlashListView listView;
//SIM卡信息
//private Map<String, Map> SimInfo = new HashMap();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "oncreate"); Log.d(TAG, "oncreate");
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//检查权限是否获取
checkPermission();
//获取本机号码(注意这里获取的不一定是卡槽1的)
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String Line1Number = mTelephonyMgr.getLine1Number();
Log.d(TAG, "Line1Number: " + Line1Number);
//获取SIM卡信息
getSimInfo(Line1Number);
//MyApplication appContext = ((MyApplication) getApplicationContext());
//appContext.setSimInfo(SimInfo);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
LogUtil.init(this); LogUtil.init(this);
// 先拿到数据并放在适配器上 // 先拿到数据并放在适配器上
@ -67,18 +80,40 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I
} }
}); });
//检查权限是否获取 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
checkPermission(); @Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
//定义AlertDialog.Builder对象当长按列表项的时候弹出确认删除对话框
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("确定删除?");
builder.setTitle("提示");
//获取本机号码(注意这里获取的不一定是卡槽1的) //添加AlertDialog.Builder对象的setPositiveButton()方法
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
String Line1Number = mTelephonyMgr.getLine1Number(); @Override
Log.d(TAG, "Line1Number: " + Line1Number); public void onClick(DialogInterface dialog, int which) {
Long id = logVos.get(position - 1).getId();
Log.d(TAG, "id = " + id);
LogUtil.delLog(id, null);
initTLogs(); //初始化数据
showList(logVos);
Toast.makeText(getBaseContext(), "删除列表项", Toast.LENGTH_SHORT).show();
}
});
//获取SIM卡信息 //添加AlertDialog.Builder对象的setNegativeButton()方法
getSimInfo(Line1Number); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
//MyApplication appContext = ((MyApplication) getApplicationContext());
//appContext.setSimInfo(SimInfo); @Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
return true;
}
});
} }
// 初始化数据 // 初始化数据

View File

@ -59,14 +59,6 @@ public class MyApplication extends Application {
return channelName; return channelName;
} }
public Map<String, Map> getSimInfo() {
return SimInfo;
}
public void setSimInfo(Map<String, Map> info) {
SimInfo = info;
}
@Override @Override
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
super.attachBaseContext(base); super.attachBaseContext(base);

View File

@ -10,21 +10,11 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class RuleModel { public class RuleModel {
private String TAG = "RuleModel";
private Long id;
public static final String FILED_TRANSPOND_ALL = "transpond_all"; public static final String FILED_TRANSPOND_ALL = "transpond_all";
public static final String FILED_PHONE_NUM = "phone_num"; public static final String FILED_PHONE_NUM = "phone_num";
public static final String FILED_MSG_CONTENT = "msg_content"; public static final String FILED_MSG_CONTENT = "msg_content";
public static final String FILED_MULTI_MATCH="multi_match"; public static final String FILED_MULTI_MATCH = "multi_match";
public static final Map<String, String> FILED_MAP = new HashMap<String, String>(); public static final Map<String, String> FILED_MAP = new HashMap<String, String>();
static{
FILED_MAP.put("transpond_all", "转发全部");
FILED_MAP.put("phone_num", "手机号");
FILED_MAP.put("msg_content", "内容");
FILED_MAP.put("multi_match", "多重匹配");
}
private String filed;
public static final String CHECK_IS = "is"; public static final String CHECK_IS = "is";
public static final String CHECK_CONTAIN = "contain"; public static final String CHECK_CONTAIN = "contain";
public static final String CHECK_START_WITH = "startwith"; public static final String CHECK_START_WITH = "startwith";
@ -32,6 +22,13 @@ public class RuleModel {
public static final String CHECK_NOT_IS = "notis"; public static final String CHECK_NOT_IS = "notis";
public static final Map<String, String> CHECK_MAP = new HashMap<String, String>(); public static final Map<String, String> CHECK_MAP = new HashMap<String, String>();
static {
FILED_MAP.put("transpond_all", "转发全部");
FILED_MAP.put("phone_num", "手机号");
FILED_MAP.put("msg_content", "内容");
FILED_MAP.put("multi_match", "多重匹配");
}
static { static {
CHECK_MAP.put("is", ""); CHECK_MAP.put("is", "");
CHECK_MAP.put("contain", "包含"); CHECK_MAP.put("contain", "包含");
@ -39,6 +36,10 @@ public class RuleModel {
CHECK_MAP.put("endwith", "结尾是"); CHECK_MAP.put("endwith", "结尾是");
CHECK_MAP.put("notis", "不是"); CHECK_MAP.put("notis", "不是");
} }
private String TAG = "RuleModel";
private Long id;
private String filed;
private String check; private String check;
private String value; private String value;
@ -46,83 +47,6 @@ public class RuleModel {
private Long senderId; private Long senderId;
private Long time; private Long time;
//字段分支
public boolean checkMsg(SmsVo msg) throws Exception {
//检查这一行和上一行合并的结果是否命中
boolean mixChecked=false;
if(msg!=null){
//先检查规则是否命中
switch (this.filed){
case FILED_TRANSPOND_ALL:
mixChecked= true;
break;
case FILED_PHONE_NUM:
mixChecked= checkValue(msg.getMobile());
break;
case FILED_MSG_CONTENT:
mixChecked= checkValue(msg.getContent());
break;
case FILED_MULTI_MATCH:
mixChecked= RuleLineUtils.checkRuleLines(msg,this.value);
break;
default:
break;
}
}
Log.i(TAG, "rule:"+this+" checkMsg:"+msg+" checked:"+mixChecked);
return mixChecked;
}
//内容分支
public boolean checkValue(String msgValue){
boolean checked=false;
if(this.value!=null){
switch (this.check){
case CHECK_IS:
checked=this.value.equals(msgValue);
break;
case CHECK_CONTAIN:
if(msgValue!=null){
checked=msgValue.contains(this.value);
}
break;
case CHECK_START_WITH:
if(msgValue!=null){
checked=msgValue.startsWith(this.value);
}
break;
case CHECK_END_WITH:
if(msgValue!=null){
checked=msgValue.endsWith(this.value);
}
break;
default:
break;
}
}
Log.i(TAG, "checkValue "+msgValue+" "+this.check+" "+this.value+" checked:"+checked);
return checked;
}
public String getRuleMatch() {
switch (filed){
case FILED_TRANSPOND_ALL:
return "全部转发到 ";
default:
return ""+FILED_MAP.get(filed)+" "+CHECK_MAP.get(check)+" "+value+" 转发到 ";
}
}
public static String getRuleMatch(String filed, String check, String value) { public static String getRuleMatch(String filed, String check, String value) {
switch (filed) { switch (filed) {
case FILED_TRANSPOND_ALL: case FILED_TRANSPOND_ALL:
@ -134,25 +58,8 @@ public class RuleModel {
} }
public Long getRuleSenderId() { public static String getRuleFiledFromCheckId(int id) {
return senderId; switch (id) {
}
public int getRuleFiledCheckId(){
switch (filed){
case FILED_MSG_CONTENT:
return R.id.btnContent;
case FILED_PHONE_NUM:
return R.id.btnPhone;
case FILED_MULTI_MATCH:
return R.id.btnMultiMatch;
default:
return R.id.btnTranspondAll;
}
}
public static String getRuleFiledFromCheckId(int id){
switch (id){
case R.id.btnContent: case R.id.btnContent:
return FILED_MSG_CONTENT; return FILED_MSG_CONTENT;
case R.id.btnPhone: case R.id.btnPhone:
@ -164,23 +71,8 @@ public class RuleModel {
} }
} }
public int getRuleCheckCheckId(){ public static String getRuleCheckFromCheckId(int id) {
switch (check){ switch (id) {
case CHECK_CONTAIN:
return R.id.btnContain;
case CHECK_START_WITH:
return R.id.btnStartWith;
case CHECK_END_WITH:
return R.id.btnEndWith;
case CHECK_NOT_IS:
return R.id.btnNotIs;
default:
return R.id.btnIs;
}
}
public static String getRuleCheckFromCheckId(int id){
switch (id){
case R.id.btnContain: case R.id.btnContain:
return CHECK_CONTAIN; return CHECK_CONTAIN;
case R.id.btnStartWith: case R.id.btnStartWith:
@ -194,6 +86,115 @@ public class RuleModel {
} }
} }
//字段分支
public boolean checkMsg(SmsVo msg) throws Exception {
//检查这一行和上一行合并的结果是否命中
boolean mixChecked = false;
if (msg != null) {
//先检查规则是否命中
switch (this.filed) {
case FILED_TRANSPOND_ALL:
mixChecked = true;
break;
case FILED_PHONE_NUM:
mixChecked = checkValue(msg.getMobile());
break;
case FILED_MSG_CONTENT:
mixChecked = checkValue(msg.getContent());
break;
case FILED_MULTI_MATCH:
mixChecked = RuleLineUtils.checkRuleLines(msg, this.value);
break;
default:
break;
}
}
Log.i(TAG, "rule:" + this + " checkMsg:" + msg + " checked:" + mixChecked);
return mixChecked;
}
//内容分支
public boolean checkValue(String msgValue) {
boolean checked = false;
if (this.value != null) {
switch (this.check) {
case CHECK_IS:
checked = this.value.equals(msgValue);
break;
case CHECK_CONTAIN:
if (msgValue != null) {
checked = msgValue.contains(this.value);
}
break;
case CHECK_START_WITH:
if (msgValue != null) {
checked = msgValue.startsWith(this.value);
}
break;
case CHECK_END_WITH:
if (msgValue != null) {
checked = msgValue.endsWith(this.value);
}
break;
default:
break;
}
}
Log.i(TAG, "checkValue " + msgValue + " " + this.check + " " + this.value + " checked:" + checked);
return checked;
}
public String getRuleMatch() {
switch (filed) {
case FILED_TRANSPOND_ALL:
return "全部转发到 ";
default:
return "" + FILED_MAP.get(filed) + " " + CHECK_MAP.get(check) + " " + value + " 转发到 ";
}
}
public Long getRuleSenderId() {
return senderId;
}
public int getRuleFiledCheckId() {
switch (filed) {
case FILED_MSG_CONTENT:
return R.id.btnContent;
case FILED_PHONE_NUM:
return R.id.btnPhone;
case FILED_MULTI_MATCH:
return R.id.btnMultiMatch;
default:
return R.id.btnTranspondAll;
}
}
public int getRuleCheckCheckId() {
switch (check) {
case CHECK_CONTAIN:
return R.id.btnContain;
case CHECK_START_WITH:
return R.id.btnStartWith;
case CHECK_END_WITH:
return R.id.btnEndWith;
case CHECK_NOT_IS:
return R.id.btnNotIs;
default:
return R.id.btnIs;
}
}
public Long getId() { public Long getId() {
return id; return id;
} }

View File

@ -3,6 +3,7 @@ package com.idormy.sms.forwarder.model.vo;
import com.idormy.sms.forwarder.R; import com.idormy.sms.forwarder.R;
public class LogVo { public class LogVo {
private Long id;
private String from; private String from;
private String content; private String content;
private String simInfo; private String simInfo;
@ -10,7 +11,8 @@ public class LogVo {
private int senderImageId; private int senderImageId;
private String time; private String time;
public LogVo(String from, String content, String simInfo, String time, String rule, int senderImageId) { public LogVo(Long id, String from, String content, String simInfo, String time, String rule, int senderImageId) {
this.id = id;
this.from = from; this.from = from;
this.content = content; this.content = content;
this.simInfo = simInfo; this.simInfo = simInfo;
@ -23,6 +25,10 @@ public class LogVo {
} }
public Long getId() {
return id;
}
public String getFrom() { public String getFrom() {
return from; return from;
} }

View File

@ -141,6 +141,8 @@ public class LogUtil {
Log.d(TAG, "getLog: itemId cursor" + Arrays.toString(cursor.getColumnNames())); Log.d(TAG, "getLog: itemId cursor" + Arrays.toString(cursor.getColumnNames()));
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
try { try {
Long itemid = cursor.getLong(
cursor.getColumnIndexOrThrow(BaseColumns._ID));
String itemfrom = cursor.getString( String itemfrom = cursor.getString(
cursor.getColumnIndexOrThrow(LogTable.LogEntry.COLUMN_NAME_FROM)); cursor.getColumnIndexOrThrow(LogTable.LogEntry.COLUMN_NAME_FROM));
String content = cursor.getString( String content = cursor.getString(
@ -163,7 +165,7 @@ public class LogUtil {
String rule = RuleModel.getRuleMatch(ruleFiled, ruleCheck, ruleValue) + senderName; String rule = RuleModel.getRuleMatch(ruleFiled, ruleCheck, ruleValue) + senderName;
int senderImageId = SenderModel.getImageId(senderType); int senderImageId = SenderModel.getImageId(senderType);
LogVo logVo = new LogVo(itemfrom, content, simInfo, time, rule, senderImageId); LogVo logVo = new LogVo(itemid, itemfrom, content, simInfo, time, rule, senderImageId);
LogVos.add(logVo); LogVos.add(logVo);
} catch (Exception e) { } catch (Exception e) {
Log.i(TAG, "getLog e:" + e.getMessage()); Log.i(TAG, "getLog e:" + e.getMessage());

View File

@ -9,9 +9,47 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
class RuleLine { class RuleLine {
public static final String CONJUNCTION_AND = "并且";
public static final String CONJUNCTION_OR = "或者";
public static final String FILED_PHONE_NUM = "手机号";
public static final String FILED_MSG_CONTENT = "短信内容";
public static final String SURE_YES = "";
public static final String SURE_NOT = "不是";
public static final String CHECK_EQUALS = "相等";
public static final String CHECK_CONTAIN = "包含";
public static final String CHECK_START_WITH = "开头";
public static final String CHECK_END_WITH = "结尾";
public static List<String> CONJUNCTION_LIST = new ArrayList<String>();
public static List<String> FILED_LIST = new ArrayList<String>();
public static List<String> SURE_LIST = new ArrayList<String>();
public static List<String> CHECK_LIST = new ArrayList<String>();
static String TAG = "RuleLine"; static String TAG = "RuleLine";
static Boolean STARTLOG = true; static Boolean STARTLOG = true;
static {
CONJUNCTION_LIST.add("and");
CONJUNCTION_LIST.add("or");
CONJUNCTION_LIST.add("并且");
CONJUNCTION_LIST.add("或者");
}
static {
FILED_LIST.add("手机号");
FILED_LIST.add("短信内容");
}
static {
SURE_LIST.add("");
SURE_LIST.add("不是");
}
static {
CHECK_LIST.add("相等");
CHECK_LIST.add("包含");
CHECK_LIST.add("开头");
CHECK_LIST.add("结尾");
}
//开头有几个空格 //开头有几个空格
int headSpaceNum = 0; int headSpaceNum = 0;
RuleLine beforeRuleLine; RuleLine beforeRuleLine;
@ -20,125 +58,13 @@ class RuleLine {
RuleLine childRuleLine; RuleLine childRuleLine;
//and or //and or
String conjunction; String conjunction;
public static List<String> CONJUNCTION_LIST = new ArrayList<String>();
public static final String CONJUNCTION_AND = "并且";
public static final String CONJUNCTION_OR = "或者";
static {
CONJUNCTION_LIST.add("and");
CONJUNCTION_LIST.add("or");
CONJUNCTION_LIST.add("并且");
CONJUNCTION_LIST.add("或者");
}
//手机号 短信内容 //手机号 短信内容
String field; String field;
public static List<String> FILED_LIST = new ArrayList<String>();
public static final String FILED_PHONE_NUM = "手机号";
public static final String FILED_MSG_CONTENT = "短信内容";
static {
FILED_LIST.add("手机号");
FILED_LIST.add("短信内容");
}
// 是否 // 是否
String sure; String sure;
public static List<String> SURE_LIST = new ArrayList<String>();
public static final String SURE_YES = "";
public static final String SURE_NOT = "不是";
static {
SURE_LIST.add("");
SURE_LIST.add("不是");
}
String check; String check;
public static List<String> CHECK_LIST = new ArrayList<String>();
public static final String CHECK_EQUALS = "相等";
public static final String CHECK_CONTAIN = "包含";
public static final String CHECK_START_WITH = "开头";
public static final String CHECK_END_WITH = "结尾";
static {
CHECK_LIST.add("相等");
CHECK_LIST.add("包含");
CHECK_LIST.add("开头");
CHECK_LIST.add("结尾");
}
String value; String value;
//字段分支
public boolean checkMsg(SmsVo msg) {
//检查这一行和上一行合并的结果是否命中
boolean mixChecked = false;
//先检查规则是否命中
switch (this.field) {
case FILED_PHONE_NUM:
mixChecked = checkValue(msg.getMobile());
break;
case FILED_MSG_CONTENT:
mixChecked = checkValue(msg.getContent());
break;
default:
break;
}
//整合肯定词
switch (this.sure) {
case SURE_YES:
mixChecked = mixChecked;
break;
case SURE_NOT:
mixChecked = !mixChecked;
break;
default:
mixChecked = false;
break;
}
logg("rule:" + this + " checkMsg:" + msg + " checked:" + mixChecked);
return mixChecked;
}
//内容分支
public boolean checkValue(String msgValue) {
boolean checked = false;
switch (this.check) {
case CHECK_EQUALS:
checked = this.value.equals(msgValue);
break;
case CHECK_CONTAIN:
if (msgValue != null) {
checked = msgValue.contains(this.value);
}
break;
case CHECK_START_WITH:
if (msgValue != null) {
checked = msgValue.startsWith(this.value);
}
break;
case CHECK_END_WITH:
if (msgValue != null) {
checked = msgValue.endsWith(this.value);
}
break;
default:
break;
}
logg("checkValue " + msgValue + " " + this.check + " " + this.value + " checked:" + checked);
return checked;
}
public RuleLine(String line, int linenum, RuleLine beforeRuleLine) throws Exception { public RuleLine(String line, int linenum, RuleLine beforeRuleLine) throws Exception {
logg("----------" + linenum + "-----------------"); logg("----------" + linenum + "-----------------");
logg(line); logg(line);
@ -328,6 +254,76 @@ class RuleLine {
} }
//字段分支
public boolean checkMsg(SmsVo msg) {
//检查这一行和上一行合并的结果是否命中
boolean mixChecked = false;
//先检查规则是否命中
switch (this.field) {
case FILED_PHONE_NUM:
mixChecked = checkValue(msg.getMobile());
break;
case FILED_MSG_CONTENT:
mixChecked = checkValue(msg.getContent());
break;
default:
break;
}
//整合肯定词
switch (this.sure) {
case SURE_YES:
mixChecked = mixChecked;
break;
case SURE_NOT:
mixChecked = !mixChecked;
break;
default:
mixChecked = false;
break;
}
logg("rule:" + this + " checkMsg:" + msg + " checked:" + mixChecked);
return mixChecked;
}
//内容分支
public boolean checkValue(String msgValue) {
boolean checked = false;
switch (this.check) {
case CHECK_EQUALS:
checked = this.value.equals(msgValue);
break;
case CHECK_CONTAIN:
if (msgValue != null) {
checked = msgValue.contains(this.value);
}
break;
case CHECK_START_WITH:
if (msgValue != null) {
checked = msgValue.startsWith(this.value);
}
break;
case CHECK_END_WITH:
if (msgValue != null) {
checked = msgValue.endsWith(this.value);
}
break;
default:
break;
}
logg("checkValue " + msgValue + " " + this.check + " " + this.value + " checked:" + checked);
return checked;
}
@Override @Override
public String toString() { public String toString() {
return "RuleLine{" + return "RuleLine{" +

View File

@ -6,9 +6,8 @@ import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
public class SettingUtil { public class SettingUtil {
private static String TAG = "SettingUtil";
static Boolean hasInit = false; static Boolean hasInit = false;
private static String TAG = "SettingUtil";
private static SharedPreferences sp_setting = null; private static SharedPreferences sp_setting = null;
private static Context context = null; private static Context context = null;

View File

@ -15,47 +15,59 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="vertical">
<Button <TextView
android:id="@+id/bt_refresh_log"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="35dp" android:layout_height="wrap_content"
android:layout_marginLeft="10dp" android:gravity="center"
android:layout_marginTop="5dp" android:text="@string/log_tips"
android:layout_marginBottom="10dp" android:textColor="@android:color/holo_blue_dark" />
android:layout_weight="1"
android:background="@android:color/holo_blue_dark"
android:onClick="cleanLog"
android:text="清空记录"
tools:ignore="NestedWeights" />
<Button <LinearLayout
android:id="@+id/bt_rule_set"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="35dp" android:layout_height="wrap_content"
android:layout_marginLeft="10dp" android:orientation="horizontal">
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@android:color/holo_blue_dark"
android:onClick="toRuleSetting"
android:text="设置转发规则"
tools:ignore="NestedWeights" />
<Button <Button
android:id="@+id/bt_send_set" android:id="@+id/bt_refresh_log"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="35dp" android:layout_height="35dp"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:layout_marginRight="10dp" android:layout_marginBottom="10dp"
android:layout_marginBottom="10dp" android:layout_weight="1"
android:layout_weight="1" android:background="@android:color/holo_blue_dark"
android:background="@android:color/holo_blue_dark" android:onClick="cleanLog"
android:onClick="toSendSetting" android:text="清空记录"
android:text="设置发送方" /> tools:ignore="NestedWeights" />
<Button
android:id="@+id/bt_rule_set"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@android:color/holo_blue_dark"
android:onClick="toRuleSetting"
android:text="设置转发规则"
tools:ignore="NestedWeights" />
<Button
android:id="@+id/bt_send_set"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@android:color/holo_blue_dark"
android:onClick="toSendSetting"
android:text="设置发送方" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -13,6 +13,7 @@
<string name="setbarktitle">设置Bark</string> <string name="setbarktitle">设置Bark</string>
<string name="check_new_version">检查更新</string> <string name="check_new_version">检查更新</string>
<string name="to_setting">设置</string> <string name="to_setting">设置</string>
<string name="log_tips">提示:置顶下拉刷新,长按删除单条记录</string>
<string name="rule_tips">提示:新建规则点击“添加”,长按删除/点击编辑已有</string> <string name="rule_tips">提示:新建规则点击“添加”,长按删除/点击编辑已有</string>
<string name="sender_tips">提示:新建发送方点击“添加”,长按删除/点击编辑已有</string> <string name="sender_tips">提示:新建发送方点击“添加”,长按删除/点击编辑已有</string>
</resources> </resources>