diff --git a/contacts/build.properties b/contacts/build.properties
index e0bef68..50bc646 100644
--- a/contacts/build.properties
+++ b/contacts/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Thu Feb 20 06:57:14 GMT 2025
+#Thu Feb 20 09:27:14 GMT 2025
stageCount=0
libraryProject=winboll-shared
baseVersion=1.0
publishVersion=1.0.0
-buildCount=98
+buildCount=99
baseBetaVersion=1.0.1
diff --git a/contacts/src/main/AndroidManifest.xml b/contacts/src/main/AndroidManifest.xml
index 4ab1fb6..fbba644 100644
--- a/contacts/src/main/AndroidManifest.xml
+++ b/contacts/src/main/AndroidManifest.xml
@@ -91,6 +91,8 @@
+
+
\ 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 02a7adb..5ccbc69 100644
--- a/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/MainActivity.java
@@ -1,7 +1,5 @@
package cc.winboll.studio.contacts;
-
-
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
@@ -26,6 +24,7 @@ import java.util.ArrayList;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import java.util.List;
+import cc.winboll.studio.contacts.activities.CallActivity;
final public class MainActivity extends AppCompatActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
@@ -80,7 +79,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// 以下正常创建主窗口
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
-
+
// 初始化工具栏
mToolbar = findViewById(R.id.activitymainToolbar1);
setSupportActionBar(mToolbar);
@@ -94,7 +93,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
initView();//调用初始化视图方法
//initPoint();//调用初始化导航原点的方法
viewPager.addOnPageChangeListener(this);//滑动事件
-
+
ViewPager viewPager = findViewById(R.id.activitymainViewPager1);
MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(pagerAdapter);
@@ -118,7 +117,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// }
// });
}
-
+
//初始化view,即显示的图片
void initView() {
@@ -131,7 +130,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
//linearLayout = findViewById(R.id.activitymainLinearLayout1);
//initPoint();//初始化页面下方的点
viewPager.setOnPageChangeListener(this);
-
+
}
//初始化所要显示的布局
@@ -147,7 +146,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
views.add(view2);
views.add(view3);
}
-
+
// void initPoint() {
// imageViews = new ImageView[5];//实例化5个图片
// for (int i = 0; i < linearLayout.getChildCount(); i++) {
@@ -159,7 +158,7 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
// currentPoint = 0;//默认第一个坐标
// imageViews[currentPoint].setImageResource(R.drawable.ic_launcher);
// }
-
+
//OnPageChangeListener接口要实现的三个方法
/* onPageScrollStateChanged(int state)
此方法是在状态改变的时候调用,其中state这个参数有三种状态:
@@ -308,8 +307,11 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
@Override
public boolean onOptionsItemSelected(MenuItem item) {
-// if (item.getItemId() == R.id.item_unittest) {
-// WinBollActivityManager.getInstance(this).startWinBollActivity(this, UnitTestActivity.class);
+ 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_exit) {
// exit();
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
new file mode 100644
index 0000000..e8f8e3e
--- /dev/null
+++ b/contacts/src/main/java/cc/winboll/studio/contacts/activities/CallActivity.java
@@ -0,0 +1,118 @@
+package cc.winboll.studio.contacts.activities;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/02/20 17:15:46
+ * @Describe 拨号窗口
+ */
+import android.Manifest;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import cc.winboll.studio.contacts.MainActivity;
+import cc.winboll.studio.contacts.R;
+
+public class CallActivity extends AppCompatActivity {
+ public static final String TAG = "CallActivity";
+
+ private static final int REQUEST_CALL_PHONE = 1;
+ private EditText phoneNumberEditText;
+ private TextView callStatusTextView;
+ private TelephonyManager telephonyManager;
+ private MyPhoneStateListener phoneStateListener;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ //setContentView(R.layout.activity_main);
+ setContentView(R.layout.activity_call);
+
+ phoneNumberEditText = findViewById(R.id.phone_number);
+ Button dialButton = findViewById(R.id.dial_button);
+ callStatusTextView = findViewById(R.id.call_status);
+
+ dialButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String phoneNumber = phoneNumberEditText.getText().toString().trim();
+ if (!phoneNumber.isEmpty()) {
+ if (ContextCompat.checkSelfPermission(CallActivity.this, Manifest.permission.CALL_PHONE)
+ != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(CallActivity.this,
+ new String[]{Manifest.permission.CALL_PHONE},
+ REQUEST_CALL_PHONE);
+ } else {
+ dialPhoneNumber(phoneNumber);
+ }
+ } else {
+ Toast.makeText(CallActivity.this, "请输入电话号码", Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+
+ // 初始化TelephonyManager和PhoneStateListener
+ telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
+ phoneStateListener = new MyPhoneStateListener();
+ telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == REQUEST_CALL_PHONE) {
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ String phoneNumber = phoneNumberEditText.getText().toString().trim();
+ dialPhoneNumber(phoneNumber);
+ } else {
+ Toast.makeText(this, "未授予拨打电话权限", Toast.LENGTH_SHORT).show();
+ }
+ }
+ }
+
+ private void dialPhoneNumber(String phoneNumber) {
+ Intent intent = new Intent(Intent.ACTION_CALL);
+ intent.setData(android.net.Uri.parse("tel:" + phoneNumber));
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+ startActivity(intent);
+ }
+
+ private class MyPhoneStateListener extends PhoneStateListener {
+ @Override
+ public void onCallStateChanged(int state, String incomingNumber) {
+ switch (state) {
+ case TelephonyManager.CALL_STATE_IDLE:
+ callStatusTextView.setText("电话已挂断");
+ break;
+ case TelephonyManager.CALL_STATE_OFFHOOK:
+ callStatusTextView.setText("正在通话中");
+ break;
+ case TelephonyManager.CALL_STATE_RINGING:
+ callStatusTextView.setText("来电: " + incomingNumber);
+ break;
+ }
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ // 取消监听
+ if (telephonyManager != null) {
+ telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
+ }
+ }
+}
+
diff --git a/contacts/src/main/res/layout/activity_call.xml b/contacts/src/main/res/layout/activity_call.xml
new file mode 100644
index 0000000..460b416
--- /dev/null
+++ b/contacts/src/main/res/layout/activity_call.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/contacts/src/main/res/menu/toolbar_main.xml b/contacts/src/main/res/menu/toolbar_main.xml
index 4a5cc30..881e169 100644
--- a/contacts/src/main/res/menu/toolbar_main.xml
+++ b/contacts/src/main/res/menu/toolbar_main.xml
@@ -2,4 +2,8 @@
diff --git a/winboll-shared/build.properties b/winboll-shared/build.properties
index e0bef68..50bc646 100644
--- a/winboll-shared/build.properties
+++ b/winboll-shared/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Thu Feb 20 06:57:14 GMT 2025
+#Thu Feb 20 09:27:14 GMT 2025
stageCount=0
libraryProject=winboll-shared
baseVersion=1.0
publishVersion=1.0.0
-buildCount=98
+buildCount=99
baseBetaVersion=1.0.1