前提・実現したいこと
自分のAndroidアプリで、別のバーコードアプリをintentで起動して、テキストを取得したいです。
バーコードアプリでバーコードを読み取ると、バーコードを数字に置き換えたテキストが得られるはずですが、どうやって**finish()**して自分のアプリに戻ってくればいいかが分かりません。
現状わかっていること
例えば、何らかのカメラアプリを起動する場合であれば、以下のようにIntentを生成し、startActivityForResult()を実行すればいいことはわかっています。
Java
1Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 2if (intent.resolveActivity(getPackageManager()) != null) { 3 // 下記でカメラへ遷移する 4 startActivityForResult(intent, requestCode); 5}
上記コードによりカメラアプリに遷移し、撮影が完了すると**onActivityResult()**が呼び出され、そこでデータの受け取り処理などを行う。ここまでは理解しています。
また、特定のアプリを起動したい場合、以下のような記法でIntentの生成時にアプリのパッケージ名+末尾にアクションを指定する必要があることもわかっています。
Java
1Intent intent = new Intent("com.package.name.SCAN")
わからないこと
今回実現したいのは呼び出し先からのテキストの取得です。
しかし、そもそも呼び出し先のアプリをどうやってfinish()すればいいのかが分かりません。
カメラアプリの場合は撮影したタイミングで勝手に呼び出し元アプリに戻ってきてくれました。
しかし、今回利用しようとしているバーコード読み取りアプリは、読み取り完了と共にfinish()しないように思われます。そのため、一度バーコードアプリへと遷移すると、onActivityResult()戻ってきてテキストを取得するということができません。
finish()して戻ってくることさえできれば、getExtras()等でテキストの取得は問題なくできるのではないかと考えています。
そもそもの理解の確認
初歩的な質問になりますが、そもそも呼び出し先アプリのソースコードにfinish()が書かれているかどうかを判断する術はあるのでしょうか?
また、呼び出し先アプリのfinish()以外の方法で、呼び出し元のアプリに帰ってくる方法はありますか?
補足(その他試したこと)
・PackageManagerを使ったアプリの起動
Java
1PackageManager pm = getPackageManager(); 2Intent intent = pm.getLaunchIntentForPackage("com.package.name"); 3startActivityForResult(intent, requestCode);
setFlagsを使ったアプリの起動
Java
1Intent intent = new Intent(); 2intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 3intent.setClassName("com.package.name","com.package.name.MainActivity"); 4startActivityForResult(intent, requestCode);
回答1件
あなたの回答
tips
プレビュー