You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SmsForwarder/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java

228 lines
7.6 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.idormy.sms.forwarder;
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import com.idormy.sms.forwarder.BroadCastReceiver.TSMSBroadcastReceiver;
import com.idormy.sms.forwarder.adapter.LogAdapter;
import com.idormy.sms.forwarder.model.LogModel;
import com.idormy.sms.forwarder.model.vo.LogVo;
import com.idormy.sms.forwarder.utils.LogUtil;
import com.umeng.analytics.MobclickAgent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity implements ReFlashListView.IReflashListener {
private IntentFilter intentFilter;
private TSMSBroadcastReceiver smsBroadcastReceiver;
private String TAG = "MainActivity";
// logVoList用于存储数据
private List<LogVo> logVos = new ArrayList<>();
private LogAdapter adapter;
private ReFlashListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "oncreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogUtil.init(this);
// 先拿到数据并放在适配器上
initTLogs(); //初始化数据
showList(logVos);
// 为ListView注册一个监听器当用户点击了ListView中的任何一个子项时就会回调onItemClick()方法
// 在这个方法中可以通过position参数判断出用户点击的是那一个子项
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
LogVo logVo = logVos.get(position - 1);
logDetail(logVo);
// Toast.makeText(MainActivity.this,String.valueOf(position),Toast.LENGTH_SHORT).show();
}
});
// textv_msg.setMovementMethod(ScrollingMovementMethod.getInstance());
// textv_msg.setText(SendHistory.getHistory());
checkPermission();
// intentFilter=new IntentFilter();
// intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
// intentFilter.addAction(MessageBroadcastReceiver.ACTION_DINGDING);
// smsBroadcastReceiver=new SMSBroadcastReceiver();
// //动态注册广播
// registerReceiver(smsBroadcastReceiver, intentFilter);
}
// 初始化数据
private void initTLogs() {
logVos = LogUtil.getLog(null, null);
}
private void showList(List<LogVo> logVosN) {
Log.d(TAG, "showList: " + logVosN);
if (adapter == null) {
// 将适配器上的数据传递给listView
listView = findViewById(R.id.list_view_log);
listView.setInterface(this);
adapter = new LogAdapter(MainActivity.this, R.layout.tlog_item, logVosN);
listView.setAdapter(adapter);
} else {
adapter.onDateChange(logVosN);
}
}
@Override
public void onReflash() {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//获取最新数据
initTLogs();
//通知界面显示
showList(logVos);
//通知listview 刷新数据完毕;
listView.reflashComplete();
}
}, 2000);
}
@Override
protected void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
//取消注册广播
unregisterReceiver(smsBroadcastReceiver);
}
public void logDetail(LogVo logVo) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("详情");
builder.setMessage(logVo.getFrom() + "\n" + logVo.getContent() + "\n" + logVo.getRule() + "\n" + logVo.getTime());
builder.show();
}
public void toSetting() {
Intent intent = new Intent(this, SettingActivity.class);
startActivity(intent);
}
public void toRuleSetting(View view) {
Intent intent = new Intent(this, RuleActivity.class);
startActivity(intent);
}
public void toSendSetting(View view) {
Intent intent = new Intent(this, SenderActivity.class);
startActivity(intent);
}
public void cleanLog(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("确定要清空转发记录吗?")
.setPositiveButton("清空", new DialogInterface.OnClickListener() {// 积极
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
LogUtil.delLog(null, null);
initTLogs();
adapter.add(logVos);
}
});
builder.show();
}
public void addLog(View view) {
Log.d(TAG, "refreshLog");
LogModel newModel = new LogModel("199999", "content" + (new SimpleDateFormat("YYYY-MM-dd HH:mm:ss").format(new Date())), 1l);
LogUtil.addLog(newModel);
// initTLogs();
// adapter.add(logVos);
}
//按返回键不退出回到桌面
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
private void checkPermission() {
// 检查权限是否获取android6.0及以上系统可能默认关闭权限,且没提示)
PackageManager pm = getPackageManager();
boolean permission_receive_boot = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_BOOT_COMPLETED", this.getPackageName()));
boolean permission_readsms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", this.getPackageName()));
if (!(
permission_receive_boot
&& permission_readsms
)) {
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.RECEIVE_BOOT_COMPLETED,
Manifest.permission.READ_SMS,
}, 0x01);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.to_setting:
toSetting();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}