Intent呼び出し元の情報を取得する方法

7,453 views
Skip to first unread message

ダイクンキャスパル

unread,
Jan 2, 2014, 8:23:53 AM1/2/14
to android-g...@googlegroups.com
お世話になります。

自分のアプリをインテントで起動した際に、呼び出し元の情報を取得する方法を教えてください。
具体的には呼び出し元のパッケージ名がわかれば良いのです。
以下のようにonCreate内に記述しましたが、エラーとなり動きません。

import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction()) ){
     //暗黙的インテント経由で起動された時の処理
String packageName = getCallingActivity().getPackageName();  //ここでエラーとなります。
Toast.makeText(this, packageName, Toast.LENGTH_LONG).show();
}}
}
エラーがでる行を「String packageName = getPackageName();」とすると自分のパッケージ名がでてきます。
Intent発行元の情報を取得することは出来ないのでしょうか。

Android4.0.4です。



Hirokazu Fukami

unread,
Jan 2, 2014, 9:04:20 AM1/2/14
to android-g...@googlegroups.com
こんばんはfkmです。

getCallingActivity()の説明を読むと
"Note: if the calling activity is not expecting a result (that is it
did not use the startActivityForResult(Intent, int) form that includes
a request code), then the calling package will be null."
と書いてあります。
http://developer.android.com/reference/android/app/Activity.html#getCallingActivity()

呼び出し元がstartActivityForResult()でIntentを発行して「いない」場合はnullになります。

なので、呼び出し元の確認を行う場合は、getCallingActivity()を一度変数にいれて、null時は強制的にNGとするような実装をいれておくとよさそうです


2014/1/2 ダイクンキャスパル <sha...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

ダイクンキャスパル

unread,
Jan 2, 2014, 8:12:26 PM1/2/14
to android-g...@googlegroups.com
fkmさん
ありがとうございます。

呼び出し元がstartActivityForResultで発行していないとどうにもならないわけですね。
ありがとうございました。

2014年1月2日木曜日 23時04分20秒 UTC+9 fkm:
> このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages