Czy mogę kliknąć przycisk programowo, aby uzyskać predefiniowaną intencję?

104

Potrzebuję kliknięcia przycisku intencji ACTION_SEND. Tutaj nie ma potrzeby wyświetlania interfejsu użytkownika. Czy mogę uzyskać kliknięcie przycisku „Wyślij” w usłudze MMS-SMSProvider w systemie Android?

info
źródło

Odpowiedzi:

243

Możesz kliknąć przycisk programowo, używając button.performClick()metody.

Nirav Bhandari
źródło
47

Jeśli twój przycisk zawiera jakąkolwiek animację, musisz wykonać kliknięcie, a następnie unieważnić każdy krok po wykonaniu kliknięcia. Oto jak:

 button.performClick();
 button.setPressed(true); 
 button.invalidate(); 
 button.setPressed(false); 
 button.invalidate(); 

Czasami musiałem też wprowadzić opóźnienie, aby animacja się pokazała. Lubię to:

 //initiate the button
 button.performClick();
 button.setPressed(true); 
 button.invalidate(); 
 // delay completion till animation completes
 button.postDelayed(new Runnable() {  //delay button 
     public void run() {  
        button.setPressed(false); 
        button.invalidate();
        //any other associated action
     }
 }, 800);  // .8secs delay time
PeteH
źródło
6
button.callOnClick();

ten też może być użyty

Lampa błyskowa
źródło
Wymagany poziom API 15 lub wyższy
alexrnov