0

Я пытаюсь инициализировать/включить NFC и модули BT в том же действии. Мне нужно, чтобы они оба были включены до того, как я продолжу задачу.OnActivityResult для 2-х различных видов активности

Я действительно понимаю, что OnResultActivity является Async, поэтому я пытаюсь выяснить, что было бы лучшим способом его достижения?

Вот большая часть кода:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     initBT(); 
     initNFC(); 

     Intent nextIntent;  
     if(SaveSharedPreference.getUserName(MainActivity.this).length() == 0) 
     { 
      nextIntent = new Intent(MainActivity.this, LoginActivity.class); 
     } 
     else 
     { 
      nextIntent = new Intent(MainActivity.this, MainMenuActivity.class); 
     } 
     startActivity(nextIntent); 
     finish(); 
    } 


    private void initBT() { 
     if(BTModule.GetInstance().initBT().equals(Constants.eBluetoothStatus.BT_DISABLED)){ 
      Intent enableBtIntent = new Intent(BTModule.GetAdapter().ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
     } 
    } 

    private void initNFC(){ 

     mNFCState = NFCModule.initNFC(this); 
     if(mNFCState == eNFCStatus.NFC_NOT_SUPPORTED){ 
      Toast.makeText(this, "NFC is not suppoeted for this device", Toast.LENGTH_LONG).show(); 
     } 
     else if(mNFCState == eNFCStatus.NFC_DISABLED){ 
      Intent nfcIntent; 
      if(android.os.Build.VERSION.SDK_INT >= 16){ 
       nfcIntent = new Intent(android.provider.Settings.ACTION_NFC_SETTINGS); 
      } 
      else{ 
      nfcIntent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); 
      } 
      startActivity(nfcIntent); 
      Toast.makeText(this, "Please enable NFC", Toast.LENGTH_LONG); 
     } 
     else{ 
      Toast.makeText(this, "NFC is up and running", Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode == eBluetoothStatus.BT_OK.ordinal()){ 
      Toast.makeText(this, "BT is up and running", Toast.LENGTH_LONG).show(); 
      return; 
     } 

    } 

} 

Как я новичок, пожалуйста, не стесняйтесь Поправьте меня, если я не прав с чем-нибудь :)

спасибо !!

ответ

0

Использование startActivityForResult вместо startActivity в initNFC методом. Также определите 2 булевых переменных, таких как isNfcEnabled и isBtEnabled. В onActivityResult метод проверяет эти булевы. Если оба из них включены, делайте все, что хотите.