スマホで簡単に間取りを作成できるアプリ「間取りー図」をAndRockで紹介していただきましたー
誠にありがとうございました。
2014年6月5日木曜日
2014年6月4日水曜日
AndroidでTwitter公式の投稿Activityを取得(新旧バージョン対応)
前回Androidアプリからツイートする4つの方法を紹介しましたが、その中でPackageManagerを利用してピンポイントで公式クライアントアプリを呼び出す方法を紹介しました
しかし、この方法は呼出し時に投稿に使われるActivityまで指定しなければならないため、公式クライアントの更新により変更されてしまった場合使えなくなります
実際過去2回ほどありました
ここではその2回の変更に対応してユーザーの公式クライアントが古いバージョンの場合にも対応できる方法を紹介します
内容はいたって簡単で、パッケージ名は不変なので"com.twitter.android"でGET_ACTIVITIESによりActivityの一覧を取得して、既知の3つのActivity名と照合します
あとはこれで取得したActivity名を
intent.setClassName("com.twitter.android", 取得Activity名);
とセットして明示的インテントで呼べばオッケーです
しかし、この方法は呼出し時に投稿に使われるActivityまで指定しなければならないため、公式クライアントの更新により変更されてしまった場合使えなくなります
実際過去2回ほどありました
ここではその2回の変更に対応してユーザーの公式クライアントが古いバージョンの場合にも対応できる方法を紹介します
public static String getTwitterClass(Context context) {
String twitterClass = null;
PackageManager pm = context.getPackageManager();
String packagename = "com.twitter.android";
String class1 = "com.twitter.android.PostActivity";
String class2 = "com.twitter.applib.composer.TextFirstComposerActivity";
String class3 = "com.twitter.android.composer.TextFirstComposerActivity";
try {
ActivityInfo[] activities = pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES).activities;
for(int i = 0; i < activities.length; i++) {
if (activities[i].name.equals(class1)) {
twitterClass = class1;
break;
} else if (activities[i].name.equals(class2)) {
twitterClass = class2;
break;
} else if (activities[i].name.equals(class3)) {
twitterClass = class3;
break;
}
}
} catch (PackageManager.NameNotFoundException e) {
//Twitter is not install
}
return twitterClass ;
}
※Twitter バージョン5.8.0対応内容はいたって簡単で、パッケージ名は不変なので"com.twitter.android"でGET_ACTIVITIESによりActivityの一覧を取得して、既知の3つのActivity名と照合します
あとはこれで取得したActivity名を
intent.setClassName("com.twitter.android", 取得Activity名);
とセットして明示的インテントで呼べばオッケーです
2014年6月2日月曜日
AndroidアプリからTwitter公式クライアントでツイートする4つの方法
今回EasyBowlingとBowlingScoreBookにSNS投稿機能をつけましたが、BowlingScoreBookでは特に「Twitterで投稿」ボタンを付けました
その時に調べたTwitterの公式クライアントを呼びだしてツイートする4つの方法です
以下に各手法の特徴をまとめてみました
その時に調べたTwitterの公式クライアントを呼びだしてツイートする4つの方法です
- 暗黙的Intentで投稿 Intent.ACTION_SENDで暗黙的Intent呼び出しによる投稿です
- 公式アプリのPackage、Classを指定して投稿 PackageManagerで公式クライアントをピンポイントで呼び出します
- URIスキームを指定して投稿 WEBページからアプリを呼び出すのに使用するURIスキームを利用して呼び出します
- URL(http://twitter.com/)を利用して投稿 公式クライアントかWEBブラウザが呼び出されます ブラウザの場合、"http://twitter.com/"の投稿画面が呼び出されます
ACTION_SENDと"text/plain"に反応するアプリがすべて出るので公式以外のクライアントアプリ、Twitterに関係のないアプリも出てきます
public static void tweetFile1(Context context, String message) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, message);
((Activity)context).startActivity(intent);
}
公式以外のクライアントアプリ以外は反応しません
公式の投稿用Activityが変わった場合には修正が必要となります(過去2回程変更されている)
public static void tweetFile2(Context context, String message) {
String twitterClass = "com.twitter.android.composer.TextFirstComposerActivity";
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, message);
intent.setClassName("com.twitter.android", twitterClass);
((Activity)context).startActivity(intent);
} catch (PackageManager.NameNotFoundException e) {
//Toast("Not found com.twitter.android")
}
}
公式以外でも"twitter://"のスキームに対応しているアプリが呼び出されます
public static void tweetFile3(Context context, String message) {
String url = "twitter://post?message=" + message;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("text/plain");
intent.setData(Uri.parse(url));
((Activity)context).startActivity(intent);
}
public static void tweetFile4(Context context, String message) {
String url = "http://twitter.com/share?text=" + message;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.setType("text/plain");
intent.setData(Uri.parse(url));
((Activity)context).startActivity(intent);
}
以下に各手法の特徴をまとめてみました
| 投稿方法 | 互換 クライ アント | 画像 投稿 | 備 考 |
|---|---|---|---|
| 1.暗黙的Intent | ○ | ○ | Twitter関連アプリ以外もでる |
| 2.Package指定 | × | ○ | 公式Twitterクライアントのみでる |
| 3.URIスキーム指定 | △ | × | 互換クライアントはスキーム対応アプリのみ |
| 4.URL(HTTP)指定 | × | × | 公式クライアントがなくてもブラウザで投稿できる |
※2014/06/02現在
2014年5月29日木曜日
2014年5月21日水曜日
Bowling Score Bookをアップデートしましたー
Bowling Score Bookをアップデートしました
主な変更は先日のEasyBowlingと同じような感じですが、こちらのほうが高機能となってます
内容としてはスコアの画像出力と共有機能の追加ですが、出力は1ゲーム分または1日分を選択できます
共有は通常共有とtwitterへの投稿、ギャラリーでの表示を選択することが出来ます
ぜひ使ってみてください
主な変更は先日のEasyBowlingと同じような感じですが、こちらのほうが高機能となってます
内容としてはスコアの画像出力と共有機能の追加ですが、出力は1ゲーム分または1日分を選択できます
共有は通常共有とtwitterへの投稿、ギャラリーでの表示を選択することが出来ます
2014年5月15日木曜日
EasyBowlingのアップデート(SNS投稿機能を付けてみた)
EasyBowlingをアップデートしました
主な変更はスコアのSNSへの投稿機能の追加です
SNSへの投稿といっても実際にはスコア画像を暗黙的IntentでACTION_SENDをしているだけですので、SNSだけではなくメールやギャラリー等にも投げれるかと思います
Twitterに投げてみるとこんな感じ
ぜひ使ってみてください
主な変更はスコアのSNSへの投稿機能の追加です
SNSへの投稿といっても実際にはスコア画像を暗黙的IntentでACTION_SENDをしているだけですので、SNSだけではなくメールやギャラリー等にも投げれるかと思います
Twitterに投げてみるとこんな感じ
ぜひ使ってみてください
2014年5月14日水曜日
新作アプリ EasyBasketballをリリースしましたー
長々と作ってきましたが、ついに新作アプリEasyBasketballをリリースしました
EasyBasketballは同系のバスケットシュートゲームにはない操作感と、シンプルで手軽に遊べるカジュアルスポーツゲームです
またプレイデータの統計分析機能がやたらと無駄に充実しております
是非とも、たくさんプレイしてみてください
EasyBasketballは同系のバスケットシュートゲームにはない操作感と、シンプルで手軽に遊べるカジュアルスポーツゲームです
またプレイデータの統計分析機能が
是非とも、たくさんプレイしてみてください
登録:
投稿 (Atom)





