2016-07-11 10 views
9

Ad esempio, ho alcune attività all'interno di un'app e per visualizzare l'interfaccia utente di determinate attività o qualsiasi altra cosa, è necessario eseguire una determinata attività che non è l'avvio dell'applicazione.Come eseguire una determinata attività in Android Studio?

Un modo stupido è creare una "porta" per quell'attività nel programma di avvio e andare all'interno dell'attività dalla porta. Tuttavia, esiste un modo migliore per eseguire una determinata attività da solo?

+0

a meno che non si fanno attività launcher, non puoi –

+0

Sono state prese delle [questa risposta] (http://stackoverflow.com/a/2180283/4281182) –

+0

vuoi eseguirlo da un'altra app? !! o dal dispositivo stesso? !! –

risposta

14

Molto facile. Inizia esportando l'attività che devi eseguire:

Aggiungi android:exported="true" nella dichiarazione di attività nel manifesto. Questo perché am è un'applicazione esterna ed è necessario esportare Attività per consentire a un'applicazione esterna di avviarle.

Passare a "Modifica configurazioni ..." nel menu "Esegui".

Nel riquadro di sinistra, selezionare l'applicazione. Nel riquadro di destra, nella scheda "Generale", nella sezione "Opzioni di avvio", è presente un menu a discesa "Avvia:".

Seleziona "Attività specificata" e inserisci il nome della tua attività così come appare nel tuo Manifest.

È possibile creare tutte le configurazioni che si desidera e assegnarle un nome come desiderato, ad esempio per indicare quale attività è in fase di avvio.

+0

Testata, ma non funziona .. Hai provato? – guo

+0

Hai dimenticato di aggiungere: la tua attività deve essere 'android: exported =" true "' – njzk2

+0

Ha funzionato. Così utile, grazie! – RominaV

1

Come accennato in this answer, si può facilmente raggiungere che dando l'attività di un nome di azione nella manifest.xml dell'app:

<activity android:name="Activity3" ... > 
    <intent-filter> 
     <action android:name="com.company.package.FOO"/> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

quindi creare il seguente intent da qualsiasi luogo, al fine di eseguire questa attività in particolare:

startActivity(new Intent("com.company.package.FOO")); 

Dopo la precisazione che l'attività deve essere eseguito in primo luogo quando si esegue l'applicazione al posto del lanciatore, è possibile ottenere che, non impostando il contenuto dell'attività lanciatore e invece di creare un intento che gestisce l'attività desiderata:

MainActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_layout); // remove this line 

    Intent intent = new Intent(ThisActivity.this, WantedActivity.class); 
    intent.putExtra("EXIT", false); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 
+2

Questo è il modo "porta" che ho rilevato – guo

+1

non esiste un altro modo, l'attività di avvio sarà l'attività di avvio –

3

Utilizzo la versione stabile di Android Studio 2.1.2 e c'è una scorciatoia per farlo. Just open the activity class you wish to run and right click on coding area, Vi sono opzioni per eseguire ed eseguire il debug di una particolare attività come mostrato nella schermata di seguito.

Per Windows utilizzare collegamentoCtrl +spostamento + F10 e per mac utilizzare Ctrl +spostamento + R. Ho provato questo in emulatore e funziona bene, non ho provato nel dispositivo reale. Funziona solo per la classe di attività e non dimentico di mettere il cursore nell'area di codifica facendo clic su di esso. Inoltre non sono a conoscenza se questa opzione è disponibile nelle precedenti versioni di Android Studio meno della 2.1.2.

enter image description here

+1

che ho testato. Se l'attività è anche il programma di avvio, allora funziona in questo modo. Tuttavia, se no, in questo modo non ha funzionato. – guo

+0

Ho provato con un'attività che non è launcher funziona bene. Gentilmente prova con attività diverse dal programma di avvio. –

+2

Come dichiarato dalla risposta di njzk2, devi aggiungere 'android: exported =" true "' alle proprietà dell'attività nel manifest per fare in modo che funzioni per un'attività non di avvio. – natinusala

1
<activity android:name=".phoneVideo"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

enter image description here enter image description here

+0

potrebbe aggiungere qualche parola di spiegazione, per favore? – RealCheeseLord

+0

aggiungi questo codice nel file mainfest.xml nell'area del file che vuoi eseguire @RealCheeseLord –

+0

@RealCheeseLord vedi come ho aggiunto nella nuova immagine. Inserisco questo codice all'interno del nome dell'attività come .phoneVideo che voglio eseguire prima –

Problemi correlati