ところで、Androd開発では、別のアプリを起動する処理を書くことが多いですね。
公式ドキュメントの別のアクティビティを開始するを一読すれば、コード自体は簡単に書くことができます。
Uri intentUri = Uri.parth("[Intentに渡すための文字列]");
String packageName = "[起動するアプリのpackage名]";
String className = "[起動するアプリのClass名]";
intent.setClassName(packageName,className);
Intent intent = new Intent(Intent.ACTION_VIEW, intentUri);
startActivity(intent);
val intentUri = Uri.parse("[Intentに渡すための文字列]")
val packageName = "[起動するアプリのpackage名]"
val className = "[起動するアプリのClass名]"
val intent = Intent(Intent.ACTION_VIEW, intentUri)
intent.setClassName(packageName,className);
startActivity(intent)
ところで
別アプリを起動する処理を書く際に困る(少なくとも私は困った)ことは
- Intentに渡すための文字列って何渡せば良いの?
- 起動するアプリのpackage名って何?
- 起動するアプリのClass名って何?
だったりします(よね?)。
今回、私が困ったのは、Salesforceアプリを起動して取引先情報を表示する処理を書く際に、Intentに渡す文字列、package名、Class名が分からなかったことです。
一応、Salesforseの公式ドキュメントに目を通してIntentに渡す文字列はわかりました。
"salesforce1://sObject/取引先企業のID/view"
残る課題は2つ
package名とClass名が分かれば後は楽勝・・・だけど、ググっても出てこない(T_T)
救いの神現る
しかし、ネットの荒波に溺れかけてた私を哀れんだ神が@xu1718191411さんの記事Android開発 他のアプリを立ち上げるための方法に導いてくれました。
実は、上記の記事だけでは、サンプルアプリを実装するのに足りないリソースがあるのですが、今の私に必要な情報はアプリ実行時にログ出力されるので無問題!
無事にSalesforceのpackage名とClass名を見つける事が出来ました!
Salesforceアプリを起動して取引先情報を表示する処理
と、言う訳で、以下の様に実装すれば、無事に取引先情報を表示出来ます。
Uri intentUri = Uri.parse("salesforce1://sObject/取引先企業のID/view");
String packageName = "com.salesforce.chatter";
String className = "com.salesforce.chatter.Chatter";
intent.setClassName(packageName,className);
Intent intent = new Intent(Intent.ACTION_VIEW, intentUri);
startActivity(intent);
val intentUri = Uri.parse("salesforce1://sObject/取引先企業のID/view")
val packageName = "com.salesforce.chatter"
val className = "com.salesforce.chatter.Chatter"
val intent = Intent(Intent.ACTION_VIEW, intentUri)
intent.setClassName(packageName,className);
startActivity(intent)
おわりに
仕様を考えたり設計したりコーディングしたり、と、つくるのって基本的に楽しいですが、ロジックは完璧(多分)なのに、設定する値がわからないのって辛いですよね。
イケてるつよつよエンジニア様ならお茶の子菜々(昭和)だと思いますが、ググってすぐに分かれば「こんなに嬉しいことはない!」って思って頂ける方が一人でもいらっしゃったら幸いです。