インテントとクリップボードと。

愛しさとせつなさと心強さと〜♪
普段、Firefox使いの俺なんですが、友達にURLを送るのにアドオンのMake Linkとか古くはCopy URL+とか必須、必携なんですわ。
そんで、スマートフォンユーザーになって、行き帰りの電車でみっけたURLをチャットとかに流すのに、標準のブラウザとかだとURLだけで不便でさ。
探すとタイトル付きで共有するアプリは結構あるんだけどね(笑

ブラウザから情報を共有でアプリに渡したり、アプリから共有するサンプルにちょうど良いので自分で作って見ることにしたよ。
Androidプログラミングバイブル的には、2章もそこそこに第6章までぶっ飛んじゃったよ。で、結局読んだかって言うと、ネットで調べたね(笑

ていうか、形になってからも調べているうちに、Android2.2だとブラウザのアドレスバーの長タップすると『ページを共有』っていうのが出てタイトルも一緒にツイート出来るっていうのに気づいて衝撃を受けた。俺は今まで何をしていたんだ…。
とりあえず、インテントの使い方と、クリップボードへのアクセスの仕方が分かったので、良しとしておこう。
難しいこと考えなくても標準のクラスとメソッドの組み合わせでそれっぽく出来るんだなー。Androidアプリ面白いわー。

[java]
package com.akira_plus.shareurlpicker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.content.Intent;
import android.text.ClipboardManager;

public class ShareURLPickerActivity extends Activity {
private Button button;
private Button button2;
private TextView display;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 各種コンポーネント
display = (TextView) this.findViewById(R.id.display);
button = (Button) this.findViewById(R.id.button);
button2 = (Button) this.findViewById(R.id.button2);

// クリックイベント
button.setOnClickListener(new MyClickAdapter());
button2.setOnClickListener(new MyClickAdapter2());

if(Intent.ACTION_SEND.equals(getIntent().getAction())){
String url = getIntent().getExtras().getCharSequence(Intent.EXTRA_TEXT).toString();
String title = getIntent().getExtras().getCharSequence(Intent.EXTRA_SUBJECT).toString();
display.setText(title +”\n”+ url);
}
}
// クリック実装
private class MyClickAdapter implements OnClickListener {
@Override
public void onClick(View v) {
String value = display.getText().toString();
Intent send = new Intent(Intent.ACTION_SEND);
send.setType(“text/plain”);
send.putExtra(Intent.EXTRA_TEXT, value);
try {
startActivity(Intent.createChooser(send, “URL情報の共有先”));
}catch(android.content.ActivityNotFoundException e){
//該当するActivityがないときの処理
}
}
}
// クリック実装
private class MyClickAdapter2 implements OnClickListener {
@Override
public void onClick(View v) {
String value = display.getText().toString();
// クリップボードマネージャを宣言。
ClipboardManager cm =
(ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
// クリップボードへ値をコピー。
cm.setText(value);
}
}
}
[/java]


Comments are closed.