diff --git a/contacts/build.properties b/contacts/build.properties index 769e989..97a0841 100644 --- a/contacts/build.properties +++ b/contacts/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Wed Feb 26 06:42:40 GMT 2025 +#Wed Feb 26 10:15:51 GMT 2025 stageCount=4 libraryProject= baseVersion=1.0 publishVersion=1.0.3 -buildCount=8 +buildCount=54 baseBetaVersion=1.0.4 diff --git a/contacts/src/main/AndroidManifest.xml b/contacts/src/main/AndroidManifest.xml index ed1cce3..3b27a29 100644 --- a/contacts/src/main/AndroidManifest.xml +++ b/contacts/src/main/AndroidManifest.xml @@ -66,7 +66,7 @@ @@ -185,4 +185,4 @@ - \ No newline at end of file + diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java index e301a8c..5027ccf 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java @@ -1,12 +1,16 @@ package cc.winboll.studio.contacts; +import android.Manifest; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.telecom.TelecomManager; +import android.telephony.PhoneStateListener; +import android.telephony.TelephonyManager; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -17,9 +21,9 @@ import android.widget.LinearLayout; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.core.app.ActivityCompat; import androidx.viewpager.widget.ViewPager; import cc.winboll.studio.contacts.R; -import cc.winboll.studio.contacts.activities.CallActivity; import cc.winboll.studio.contacts.activities.SettingsActivity; import cc.winboll.studio.contacts.adapters.MyPagerAdapter; import cc.winboll.studio.contacts.beans.MainServiceBean; @@ -43,6 +47,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS"; + static MainActivity _MainActivity; LogView mLogView; Toolbar mToolbar; CheckBox cbMainService; @@ -56,6 +61,9 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct LinearLayout linearLayout;//下标所在在LinearLayout布局里 int currentPoint = 0;//当前被选中中页面的下标 + private TelephonyManager telephonyManager; + private MyPhoneStateListener phoneStateListener; + private static final int DIALER_REQUEST_CODE = 1; @Override @@ -88,6 +96,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct //if (prosessIntents(getIntent())) return; // 以下正常创建主窗口 super.onCreate(savedInstanceState); + _MainActivity = this; setContentView(R.layout.activity_main); // 初始化工具栏 @@ -135,6 +144,20 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct if (mMainServiceBean.isEnable()) { MainService.startMainService(this); } + + // 初始化TelephonyManager和PhoneStateListener + telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); + phoneStateListener = new MyPhoneStateListener(); + telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); + } + + public static void dialPhoneNumber(String phoneNumber) { + Intent intent = new Intent(Intent.ACTION_DIAL); + intent.setData(android.net.Uri.parse("tel:" + phoneNumber)); + if (ActivityCompat.checkSelfPermission(_MainActivity, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { + return; + } + _MainActivity.startActivity(intent); } //初始化view,即显示的图片 @@ -225,6 +248,23 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct //setSubTitle(""); } + private class MyPhoneStateListener extends PhoneStateListener { + @Override + public void onCallStateChanged(int state, String incomingNumber) { + switch (state) { + case TelephonyManager.CALL_STATE_IDLE: + LogUtils.d(TAG, "电话已挂断"); + break; + case TelephonyManager.CALL_STATE_OFFHOOK: + LogUtils.d(TAG, "正在通话中"); + break; + case TelephonyManager.CALL_STATE_RINGING: + LogUtils.d(TAG, "来电: " + incomingNumber); + break; + } + } + } + @Override protected void onDestroy() { super.onDestroy(); @@ -325,11 +365,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.item_call) { - Intent intent = new Intent(this, CallActivity.class); - startActivity(intent); - //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); - } else if (item.getItemId() == R.id.item_settings) { + if (item.getItemId() == R.id.item_settings) { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/activities/CallActivity.java b/contacts/src/main/java/cc/winboll/studio/contacts/activities/CallActivity.java index e8f8e3e..ebff426 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/activities/CallActivity.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/activities/CallActivity.java @@ -34,6 +34,7 @@ public class CallActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); setContentView(R.layout.activity_call); diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java b/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java index 7830c2f..985378e 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/adapters/CallLogAdapter.java @@ -5,14 +5,17 @@ package cc.winboll.studio.contacts.adapters; * @Date 2025/02/26 13:09:32 * @Describe CallLogAdapter */ +import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.beans.CallLogModel; +import com.hjq.toast.ToastUtils; import java.text.SimpleDateFormat; import java.util.List; import java.util.Locale; @@ -35,11 +38,23 @@ public class CallLogAdapter extends RecyclerView.Adapter { public static final String TAG = "ContactAdapter"; + private static final int REQUEST_CALL_PHONE = 1; private List contactList; @@ -45,8 +46,12 @@ public class ContactAdapter extends RecyclerView.Adapter + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".phonecallui.PhoneCallActivity"> - + - + + - + - + - + - + - + - + - - + + + + + - - \ No newline at end of file diff --git a/contacts/src/main/res/layout/fragment_contacts.xml b/contacts/src/main/res/layout/fragment_contacts.xml index b2769a6..77f06a6 100644 --- a/contacts/src/main/res/layout/fragment_contacts.xml +++ b/contacts/src/main/res/layout/fragment_contacts.xml @@ -1,21 +1,36 @@ + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> - + - + + +