Intent.FLAG_ACTIVITY_CLEAR_TOP
を Intent#setFlag(int)
でセットするだけ。
fun showTop(View view) {
let intent = Intent(getApplication(), MainActivity::class.java)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent);
}
Intent.FLAG_ACTIVITY_CLEAR_TOP
を Intent#setFlag(int)
でセットするだけ。
fun showTop(View view) {
let intent = Intent(getApplication(), MainActivity::class.java)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent);
}
どうも。どっことです。今回は共有ボタンの実装について解説します。
X(旧:Twitter)でのポストやブログの記事など、Webにはいたる所に共有ボタンがあります。今回は共有ボタンによりデータが送信された時にアプリ側でそれを受け取るための実装と、アプリで共有ボタンを用意する実装をそれぞれ解説していきます。
よくあるBroadcastReceiverの実装パターンです。2つやることがあります。
1つは、AndroidManifest.xml
に共有ボタンによるデータ送信のintent
を受け取る宣言を明記します。
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
そしてもう一つは、実際に受け取った時の処理です。受け取るActivity
やBroadcastReceiver
に対してインテントフィルターを設定します。Activity
では、メンバ変数として持っているintent
を、BroadcastReceiver
ではBroadcastReceiver#onReceived
の引数として渡されるintent
を参照することで、詰められているデータにアクセスすることができます。
override fun onCreate(savedInstanceState: Bundle?) {
if (intent?.action == Intent.ACTION_SEND) {
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
// 良しなにする
}
}
こちらもよくあるstartActivity(Intent)
の実装です。
ただintent
の作り方だけちょっと独特で、共有したいデータを詰めたintent
をIntent#createChooser
に渡します。そうして返されたintent
をstartActivity
で投げます。
val temp: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "テストのテキストです")
type = "text/plain"
}
startActivity(Intent.createChooser(temp, null))
今回は共有ボタンに関するAndroidの実装を解説しました。特に共有ボタンからデータを受け取る処理はアプリを利用してもらう契機として重要なので、参考にしていただけると幸いです。
どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。