package com.example.mysmsapp; import android.app.role.RoleManager; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.provider.Settings; 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; 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("15077886171", "test"); printPdu(res); }); } @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); } }