(FRONT) FRONT (2025)

ReturnAsk special permission and listen answer

   1:  package com.voipplus.mmsclient.activities;
   2:  
   3:  import static com.voipplus.mmsclient.BuildConfig.*;
   4:  
   5:  import android.Manifest;
   6:  import android.content.pm.PackageManager;
   7:  import android.os.Bundle;
   8:  import android.util.Log;
   9:  import android.widget.Button;
  10:  
  11:  import androidx.activity.EdgeToEdge;
  12:  import androidx.annotation.NonNull;
  13:  import androidx.appcompat.app.AppCompatActivity;
  14:  import androidx.core.app.ActivityCompat;
  15:  import androidx.core.content.ContextCompat;
  16:  import androidx.core.graphics.Insets;
  17:  import androidx.core.view.ViewCompat;
  18:  import androidx.core.view.WindowInsetsCompat;
  19:  import androidx.recyclerview.widget.LinearLayoutManager;
  20:  import androidx.recyclerview.widget.RecyclerView;
  21:  
  22:  import com.google.android.material.tabs.TabLayout;
  23:  import com.voipplus.mmsclient.R;
  24:  import com.voipplus.mmsclient.WebRTC.WebRTCService;
  25:  import com.voipplus.mmsclient.httpService.HTTPService;
  26:  import com.voipplus.mmsclient.mms.MMSType;
  27:  import com.voipplus.mmsclient.randomData.DataGenerator;
  28:  import com.voipplus.mmsclient.randomData.RandomMessageItem;
  29:  import com.voipplus.mmsclient.randomData.RandomMessageItemAdapter;
  30:  import com.voipplus.mmsclient.serviceLocalStorage.CryptoStorageService;
  31:  import com.voipplus.mmsclient.serviceLocalStorage.KeyValueService;
  32:  import com.voipplus.mmsclient.serviceMMS.MMSProcessingService;
  33:  import com.voipplus.mmsclient.serviceMMS.MMSServiceStarter;
  34:  import com.voipplus.mmsclient.serviceManager.MyApplication;
  35:  import com.voipplus.mmsclient.serviceManager.ServiceLocatorReference;
  36:  import com.voipplus.mmsclient.tabs.TabSwitcher;
  37:  import com.voipplus.mmsclient.testMMS.MMSTestGenerator;
  38:  
  39:  import java.util.List;
  40:  
  41:  public class NotificationActivity extends AppCompatActivity {
  42:      private Button closeButton;
  43:      private TabLayout tabLayout;
  44:      private TabSwitcher tabSwitcher;
  45:      private MMSServiceStarter mmsServiceStarter;
  46:      private static final String TAG = "NotificationActivity";
  47:      private static final int REQUEST_SMS_PERMISSIONS = 1001;
  48:  
  49:      @Override
  50:      protected void onCreate(Bundle savedInstanceState) {
  51:          super.onCreate(savedInstanceState);
  52:          Log.d(TAG, "onCreate: NotificationActivity started");
  53:  
  54:          // Get the Application instance
  55:          MyApplication myApp = (MyApplication) getApplication();
  56:          // Get the ServiceLocator
  57:          ServiceLocatorReference serviceLocator = myApp.serviceLocator;
  58:  
  59:          // Get the services
  60:          KeyValueService keyValueService = serviceLocator.getService(KeyValueService.class);
  61:          CryptoStorageService cryptoStorageService = serviceLocator.getService(CryptoStorageService.class);
  62:          HTTPService httpService = serviceLocator.getService(HTTPService.class);
  63:          WebRTCService webRTCService = serviceLocator.getService(WebRTCService.class);
  64:  
  65:          // Use the services
  66:          System.out.println("NotificationActivity: Services references are available");
  67:          if (keyValueService != null) {
  68:              String value = keyValueService.get("myKey");
  69:              Log.d(TAG, "KeyValueService Retrieved value: " + value);
  70:          } else {
  71:              Log.e(TAG, "KeyValueService is null!");
  72:          }
  73:          if (cryptoStorageService != null) {
  74:              String value = cryptoStorageService.get("cryptoKey");
  75:              Log.d(TAG, "CryptoStorageService Retrieved value: " + value);
  76:          } else {
  77:              Log.e(TAG, "CryptoStorageService is null!");
  78:          }
  79:          if (httpService != null) {
  80:              // Example usage of HTTPService
  81:              // You can call httpService.makeRequest() here if needed
  82:              Log.d(TAG, "HTTPService is available");
  83:          } else {
  84:              Log.e(TAG, "HTTPService is null!");
  85:          }
  86:  
  87:          mmsServiceStarter = new MMSServiceStarter(this, new MMSServiceStarter.MMSProcessingServiceConnectionListener() {
  88:              @Override
  89:              public void onMMSProcessingServiceConnected(MMSProcessingService service) {
  90:                  MyApplication myApp = (MyApplication) getApplication();
  91:                  myApp.registerServiceInstance(MMSProcessingService.class, service);
  92:              }
  93:          });
  94:  
  95:           checkAndRequestPermissions();
  96:  
  97:          if (GENERATE_TEST_MMS) {
  98:              MMSTestGenerator.generateTestMMS(this, "111111", MMSType.MIXED_MEDIA_WITH_VIDEO_AND_SOUND);
  99:              MMSTestGenerator.generateTestMMS(this, "111112", MMSType.TEXT_AND_IMAGE);
 100:          }
 101:  
 102:          setContentView(R.layout.activity_notification);
 103:          setTitle("VoipPLUS Notification");
 104:  
 105:          tabLayout = findViewById(R.id.tabLayout);
 106:          tabSwitcher = new TabSwitcher(this, tabLayout);
 107:          tabSwitcher.selectTab(-1);
 108:          Log.d(TAG, "onCreate: tabSwitcher created");
 109:  
 110:          RecyclerView recyclerView = findViewById(R.id.recyclerView);
 111:          List<RandomMessageItem> randomIitems = DataGenerator.generateRandomData(5);
 112:          RandomMessageItemAdapter adapter = new RandomMessageItemAdapter(randomIitems);
 113:          recyclerView.setAdapter(adapter);
 114:          recyclerView.setLayoutManager(new LinearLayoutManager(this));
 115:  
 116:          EdgeToEdge.enable(this);
 117:          ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
 118:              Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
 119:              v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
 120:              return insets;
 121:          });
 122:      }
 123:  
 124:      private void checkAndRequestPermissions() {
 125:          if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED ||
 126:                  ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED ||
 127:                  ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {
 128:              ActivityCompat.requestPermissions(this, new String[]{
 129:                      Manifest.permission.SEND_SMS,
 130:                      Manifest.permission.READ_SMS,
 131:                      Manifest.permission.RECEIVE_SMS
 132:              }, REQUEST_SMS_PERMISSIONS);
 133:          } else {
 134:              startMMSProcessingService();
 135:          }
 136:      }
 137:  
 138:      @Override
 139:      public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 140:          super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 141:          if (requestCode == REQUEST_SMS_PERMISSIONS) {
 142:              if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
 143:                  startMMSProcessingService();
 144:              } else {
 145:                  Log.e(TAG, "SMS permissions denied");
 146:                  // Handle permission denial (e.g., show a message to the user)
 147:              }
 148:          }
 149:      }
 150:  
 151:      private void startMMSProcessingService() {
 152:          mmsServiceStarter.startAndBindService();
 153:      }
 154:  
 155:      @Override
 156:      protected void onDestroy() {
 157:          super.onDestroy();
 158:          // Unbind the MMSProcessingService
 159:          mmsServiceStarter.unbind();
 160:      }
 161:  }
 162:  

Return




AndroidMosaic context:



Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23>  <24>  <25
Link to this page: http://www.vb-net.com/AndroidMosaic/Index04.htm
<TAGS>  <ARTICLES>  <FRONT>  <CORE>  <MVC>  <ASP>  <NET>  <DATA>  <TASK>  <XML>  <KIOSK>  <NOTES>  <SQL>  <LINUX>  <MONO>  <FREEWARE>  <DOCS> <TRAVELS> <FLOWERS> <RESUME> < THANKS ME>