package com.example.mysmsapp; import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import java.io.Serializable; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); findViewById(R.id.btn_set_default).setOnClickListener(e -> { RoleManager roleManager; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { roleManager = getApplicationContext().getSystemService(RoleManager.class); if (roleManager.isRoleAvailable(RoleManager.ROLE_SMS)) { if (roleManager.isRoleHeld(RoleManager.ROLE_SMS)) { Toast.makeText(getApplicationContext(), "PrismApp set as default.", Toast.LENGTH_SHORT).show(); Intent i = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS); startActivity(i); } else { Intent roleRequestIntent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS); startActivityForResult(roleRequestIntent, 1); } } } }); findViewById(R.id.btn_send_sms).setOnClickListener(e -> { Intent intent = SmsUtils.getSmsIntent("10086", "Hello, world!"); sendBroadcast(intent); }); findViewById(R.id.btn_pdu).setOnClickListener(e -> { byte[] res = SmsUtils.createFakeSms("1234", "test"); Object[] messages = new Object[1]; messages[0] = res; Log.d(TAG, res.toString()); Log.d(TAG, messages.toString()); printPdu(res); }); findViewById(R.id.btn_info).setOnClickListener(e -> { TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); Log.i(TAG, "IMEI: " + telephonyManager.getImei()); Log.i(TAG, "serial: " + telephonyManager.getSimSerialNumber()); Log.i(TAG, "networkOperator: " + telephonyManager.getNetworkOperator()); Log.i(TAG, "simOperator: " + telephonyManager.getSimOperator()); SubscriptionManager subscriptionManager = SubscriptionManager.from(this); final int simCount = subscriptionManager.getActiveSubscriptionInfoCountMax(); for (int i = 0; i < simCount; i++) { SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(i); if (subInfo != null) { Log.i(TAG, "subId: " + subInfo.getSubscriptionId()); Log.i(TAG, "simSlotIndex: " + subInfo.getSimSlotIndex()); Log.i(TAG, "iccId: " + subInfo.getIccId()); break; } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.d(TAG, "onActivityResult: "); } public static void printPdu(byte[] bytes) { String s = ""; for (byte b : bytes) { s += b + ", "; } Log.d("PDU", s); } }