MainActivity.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.example.mysmsapp;
  2. import android.app.role.RoleManager;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.os.Build;
  6. import android.os.Bundle;
  7. import android.provider.Settings;
  8. import android.telephony.SubscriptionInfo;
  9. import android.telephony.SubscriptionManager;
  10. import android.telephony.TelephonyManager;
  11. import android.util.Log;
  12. import android.widget.Toast;
  13. import androidx.activity.EdgeToEdge;
  14. import androidx.annotation.Nullable;
  15. import androidx.appcompat.app.AppCompatActivity;
  16. import androidx.core.graphics.Insets;
  17. import androidx.core.view.ViewCompat;
  18. import androidx.core.view.WindowInsetsCompat;
  19. import java.io.Serializable;
  20. public class MainActivity extends AppCompatActivity {
  21. private static final String TAG = "MainActivity";
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. EdgeToEdge.enable(this);
  26. setContentView(R.layout.activity_main);
  27. ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
  28. Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
  29. v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
  30. return insets;
  31. });
  32. findViewById(R.id.btn_set_default).setOnClickListener(e -> {
  33. RoleManager roleManager;
  34. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
  35. roleManager = getApplicationContext().getSystemService(RoleManager.class);
  36. if (roleManager.isRoleAvailable(RoleManager.ROLE_SMS)) {
  37. if (roleManager.isRoleHeld(RoleManager.ROLE_SMS)) {
  38. Toast.makeText(getApplicationContext(), "PrismApp set as default.", Toast.LENGTH_SHORT).show();
  39. Intent i = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
  40. startActivity(i);
  41. } else {
  42. Intent roleRequestIntent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS);
  43. startActivityForResult(roleRequestIntent, 1);
  44. }
  45. }
  46. }
  47. });
  48. findViewById(R.id.btn_send_sms).setOnClickListener(e -> {
  49. Intent intent = SmsUtils.getSmsIntent("10086", "Hello, world!");
  50. sendBroadcast(intent);
  51. });
  52. findViewById(R.id.btn_pdu).setOnClickListener(e -> {
  53. byte[] res = SmsUtils.createFakeSms("1234", "test");
  54. Object[] messages = new Object[1];
  55. messages[0] = res;
  56. Log.d(TAG, res.toString());
  57. Log.d(TAG, messages.toString());
  58. printPdu(res);
  59. });
  60. findViewById(R.id.btn_info).setOnClickListener(e -> {
  61. TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  62. Log.i(TAG, "IMEI: " + telephonyManager.getImei());
  63. Log.i(TAG, "serial: " + telephonyManager.getSimSerialNumber());
  64. Log.i(TAG, "networkOperator: " + telephonyManager.getNetworkOperator());
  65. Log.i(TAG, "simOperator: " + telephonyManager.getSimOperator());
  66. SubscriptionManager subscriptionManager = SubscriptionManager.from(this);
  67. final int simCount = subscriptionManager.getActiveSubscriptionInfoCountMax();
  68. for (int i = 0; i < simCount; i++) {
  69. SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(i);
  70. if (subInfo != null) {
  71. Log.i(TAG, "subId: " + subInfo.getSubscriptionId());
  72. Log.i(TAG, "simSlotIndex: " + subInfo.getSimSlotIndex());
  73. Log.i(TAG, "iccId: " + subInfo.getIccId());
  74. break;
  75. }
  76. }
  77. });
  78. }
  79. @Override
  80. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  81. super.onActivityResult(requestCode, resultCode, data);
  82. Log.d(TAG, "onActivityResult: ");
  83. }
  84. public static void printPdu(byte[] bytes) {
  85. String s = "";
  86. for (byte b : bytes) {
  87. s += b + ", ";
  88. }
  89. Log.d("PDU", s);
  90. }
  91. }