たとえば、1つのアプリ内にいくつかのアクティビティがあり、特定のアクティビティのUIなどを表示するために、アプリのランチャではないアクティビティを実行する必要があります。Android Studioで特定のアクティビティを実行するにはどうすればよいですか?
1つのばかげたやり方は、ランチャーのその活動のための「ドア」を構築し、ドアから活動の中に入ることです。ただし、特定のアクティビティを単独で実行する方法はありますか?
たとえば、1つのアプリ内にいくつかのアクティビティがあり、特定のアクティビティのUIなどを表示するために、アプリのランチャではないアクティビティを実行する必要があります。Android Studioで特定のアクティビティを実行するにはどうすればよいですか?
1つのばかげたやり方は、ランチャーのその活動のための「ドア」を構築し、ドアから活動の中に入ることです。ただし、特定のアクティビティを単独で実行する方法はありますか?
非常に簡単です。実行する必要があるアクティビティをエクスポートすることから始めます。
android:exported="true"
をマニフェストのアクティビティ宣言に追加します。これは、am
が外部アプリケーションであり、外部アプリケーションがそれらを開始できるようにアクティビティをエクスポートする必要があるためです。
[実行]メニューの[設定の編集...]に移動します。
左ペインで、アプリケーションを選択します。右ペインの[一般]タブの[起動オプション]セクションには、[起動:]ドロップダウンがあります。
[指定されたアクティビティ]を選択し、マニフェストに表示されるアクティビティの名前を入力します。
任意の数の構成を好きなように作成し、好きなように名前を付けることができます(たとえば、どのアクティビティが開始されているかなど)。
this answerで述べたように、あなたは簡単にアプリののmanifest.xmlでの活動にアクション名を与えることによって、それを達成することができます
<activity android:name="Activity3" ... >
<intent-filter>
<action android:name="com.company.package.FOO"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
その後、実行するために、どこからでも、次のintent
を作成この活動は、特に:あなたの明確化の後
startActivity(new Intent("com.company.package.FOO"));
こと
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);
}
これは私が測定した "ドア"方法です – guo
別の方法はありません、ランチャー活動はランチャー活動になります –
私はAndroid Studio安定版2.1.2を使用していますが、そのためのショートカットが1つあります。 Just open the activity class you wish to run and right click on coding area
、下記のスクリーンショットに示すように、特定のアクティビティを実行してデバッグするオプションがあります。 Windows用
はショートカットCTRL + シフト + F10とMACがCTRL + シフト + Rを使用するための使用します。私はエミュレータとそのうまくいった作業でこれをテストしましたが、実際のdevice.Worksでテストしていませんでした。アクティビティクラスのみで、それをクリックしてコーディングエリアにカーソルを置くことを忘れないでください。また、私はこのオプションが古いAndroidスタジオバージョン2.1.2未満で利用可能かどうかは知らない。あなたはランチャーとしての活動を行う場合を除き
私はテストしました。アクティビティがランチャーでもある場合は、この方法でうまくいきます。しかし、そうでなければ、この方法はうまくいかなかった。 – guo
私は、ランチャーではない活動をテストしました。ランチャー以外のアクティビティをお試しください。 –
njzk2の答えで述べたように、マニフェスト内のアクティビティのプロパティに 'android:exported =" true "'を追加して、非ランチャアクティビティでこれを動作させる必要があります。 – natinusala
<activity android:name=".phoneVideo">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
は説明をいくつか追加できますか? – RealCheeseLord
このコードを実行するファイルの領域にあるmainfest.xmlファイルに追加します。@RealCheeseLord –
@RealCheeseLord新しい画像に追加したのを参照してください。私は最初に実行したい.phoneVideoのようなアクティビティ名の中にこのコードを置きます。 –
、あなたは –
はあなたが確認しましたカント[この回答](http://stackoverflow.com/a/2180283/4281182) –
あなたは別のアプリからそれを実行したいですか?またはデバイス自体から? –