他の人が作成したアプリをインテント連携で起動する方法

2,534 views
Skip to first unread message

55555

unread,
Sep 7, 2010, 4:42:21 AM9/7/10
to 日本Androidの会
お世話になっております。
55555です。

自分で作成したActivityからインテント連携にて、他の方が提供してくれた
Activityを起動したいのですが、以下の手順で実行したところExceptionが
発生しております。

回避方法や手順をご教授いただきたいと思います。

やりたいこと

1.自分で作成したアプリを起動直後に他者が作成したアプリを起動する
2.他者が作成したアプリ終了後、1で起動したアプリの画面が表示される

ソース
---------------------------------------------------------------------
package jp.testtest;

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

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

String clazz = "com.xxxx.yyyy.zzzz";
Intent intent = new Intent(Intent.ACTION_MAIN);

int idx = clazz.lastIndexOf('.');
String pkg = clazz.substring(0, idx);

intent.setClassName(pkg, clazz);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);
}
}
---------------------------------------------------------------------

上記のソースを実行したところ、ログに以下のような出力がありました。

---------------------------------------------------------------------
I/ActivityManager( 1335): Starting activity: Intent
{ act=android.intent.action.MAIN cmp=com.xxxx.yyyy/.zzzz }
W/dalvikvm( 3151): threadid=3: thread exiting with uncaught exception
(group=0x2aac5a18)
E/AndroidRuntime( 3151): Uncaught handler: thread main exiting due to
uncaught exception
E/AndroidRuntime( 3151): java.lang.RuntimeException: Unable to start
activity ComponentInfo{jp.testtest/jp.testtest.TestActivity}:
android.content.ActivityNotFoundException: Unable to find explicit
activity class {com.xxxx.yyyy/com.xxxx.yyyy.zzzz}; have you declared
this activity in your AndroidManifest.xml?
E/AndroidRuntime( 3151): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
2590)
E/AndroidRuntime( 3151): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
2606)
E/AndroidRuntime( 3151): at android.app.ActivityThread.access
$2200(ActivityThread.java:134)
E/AndroidRuntime( 3151): at android.app.ActivityThread
$H.handleMessage(ActivityThread.java:1940)
E/AndroidRuntime( 3151): at
android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3151): at android.os.Looper.loop(Looper.java:
123)
E/AndroidRuntime( 3151): at
android.app.ActivityThread.main(ActivityThread.java:4403)
E/AndroidRuntime( 3151): at
java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3151): at
java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 3151): at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:799)
E/AndroidRuntime( 3151): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
E/AndroidRuntime( 3151): at
dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 3151): Caused by:
android.content.ActivityNotFoundException: Unable to find explicit
activity class {com.xxxx.yyyy/com.xxxx.yyyy.zzzz}; have you declared
this activity in your AndroidManifest.xml?
E/AndroidRuntime( 3151): at
android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:
1493)
E/AndroidRuntime( 3151): at
android.app.Instrumentation.execStartActivity(Instrumentation.java:
1467)
E/AndroidRuntime( 3151): at
android.app.Activity.startActivityForResult(Activity.java:2672)
E/AndroidRuntime( 3151): at
android.app.Activity.startActivity(Activity.java:2716)
E/AndroidRuntime( 3151): at
jp.testtest.TestActivity.onCreate(TestActivity.java:26)
E/AndroidRuntime( 3151): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:
1127)
E/AndroidRuntime( 3151): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
2553)
E/AndroidRuntime( 3151): ... 11 more
E/dalvikvm( 3151): Unable to open stack trace file '/data/anr/
traces.txt': Permission denied
---------------------------------------------------------------------

当然、実行したい他者のアプリは、端末上にインストールしています。

お手数をおかけいたしますが、ご協力よろしくお願いします。

Akio Kondo

unread,
Sep 7, 2010, 5:23:38 AM9/7/10
to android-g...@googlegroups.com

こんどうです

アクティビティのっとふぁうんどえくせぷしょんがでてるので、
実行したいアクティビティの記述が間違っているか、起動先のアプリのAndroidmanifest.xmlにアクティビティの記述がないのではないでしょうか?

substringを使わずにじかに起動するアクティビティを埋め込んでも同じエラーが出ますか?

2010/09/07 17:42 "55555" <tachi...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

55555

unread,
Sep 7, 2010, 5:53:21 AM9/7/10
to 日本Androidの会


On 9月7日, 午後6:23, Akio Kondo <koji...@gmail.com> wrote:
> こんどうです
>
> アクティビティのっとふぁうんどえくせぷしょんがでてるので、
> 実行したいアクティビティの記述が間違っているか、起動先のアプリのAndroidmanifest.xmlにアクティビティの記述がないのではないでしょうか-?
>
> substringを使わずにじかに起動するアクティビティを埋め込んでも同じエラーが出ますか?
> 2010/09/07 17:42 "55555" <tachi55...@gmail.com>:
> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro-up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

55555

unread,
Sep 7, 2010, 5:47:04 AM9/7/10
to 日本Androidの会
こんどうさん

コメントありがとうございます。
Androidmanifest.xmlには、特に記述をしていません。

確かに、ExceptionにはAndroidmanifest.xmlへ記述してねと
書かれていますが、Androidmanifest.xmlへActivityの記述を
するとビルドできなくなるんですよね。
※エラー内容は、「そんなパッケージ知りません」が英語で出ています。

ソースを
intent.setClassName(pkg, clazz);
から
intent.setClassName("com.xxxx.yyyy", "com.xxxx.yyyy.zzzz");
にしましたが、同様のエラーが出力されました。

Androidmanifest.xmlは、どのように記述すればよろしいのでしょうか?


On 9月7日, 午後6:23, Akio Kondo <koji...@gmail.com> wrote:
> こんどうです
>
> アクティビティのっとふぁうんどえくせぷしょんがでてるので、
> 実行したいアクティビティの記述が間違っているか、起動先のアプリのAndroidmanifest.xmlにアクティビティの記述がないのではないでしょうか-?
>
> substringを使わずにじかに起動するアクティビティを埋め込んでも同じエラーが出ますか?
> 2010/09/07 17:42 "55555" <tachi55...@gmail.com>:

Akio Kondo

unread,
Sep 7, 2010, 5:56:05 AM9/7/10
to android-g...@googlegroups.com
こんどうです

Androidmanifest.xmlに記述が必要なのは
起動される方のアプリです。
起動元には必要ないですよー

・起動される方のアプリのAndroidmanifest.xmlに記述がない
・起動する側のパッケージ名、クラス名が間違っている

のどちらかだと思います。

2010/9/7 55555 <tachi...@gmail.com>:

55555

unread,
Sep 7, 2010, 6:00:22 AM9/7/10
to 日本Androidの会
こんどうさま

お世話になっております。

Androidmanifest.xmlには何も記述していません。
Exceptionに、その旨記述されたので、
Androidmanifest.xmlへ実行したいActivity名称を記述した
ところ、Eclipse上でエラーとなりビルドができなかったので
やむなくAndroidmanifest.xmlには何も記述しませんでした。

※エラー内容は「Class com.xxxx.yyyy.zzzz does not exist」です。

ビルドが通るAndroidmanifest.xmlの記述方法をご存知でしたら、
ご教授いただければと思います。

よろしくお願いします。

On 9月7日, 午後6:23, Akio Kondo <koji...@gmail.com> wrote:
> こんどうです
>
> アクティビティのっとふぁうんどえくせぷしょんがでてるので、
> 実行したいアクティビティの記述が間違っているか、起動先のアプリのAndroidmanifest.xmlにアクティビティの記述がないのではないでしょうか-?
>
> substringを使わずにじかに起動するアクティビティを埋め込んでも同じエラーが出ますか?
> 2010/09/07 17:42 "55555" <tachi55...@gmail.com>:

sys1yagi

unread,
Sep 7, 2010, 6:11:54 AM9/7/10
to android-g...@googlegroups.com

setPacageNameみたいなのありませんっけ。setComponentNameかな

2010/09/07 19:00 "55555" <tachi...@gmail.com>:



こんどうさま

お世話になっております。

Androidmanifest.xmlには何も記述していません。
Exceptionに、その旨記述されたので、
Androidmanifest.xmlへ実行したいActivity名称を記述した
ところ、Eclipse上でエラーとなりビルドができなかったので
やむなくAndroidmanifest.xmlには何も記述しませんでした。

※エラー内容は「Class com.xxxx.yyyy.zzzz does not exist」です。

ビルドが通るAndroidmanifest.xmlの記述方法をご存知でしたら、
ご教授いただければと思います。

よろしくお願いします。


On 9月7日, 午後6:23, Akio Kondo <koji...@gmail.com> wrote:

> こんどうです
>
> アクティビティのっとふぁうんどえくせぷしょんがでてるので、
> 実行したいアクティビティの記述が間違っているか、起動先のアプリのAndroidmanifest.xmlにアクテ...

> 2010/09/07 17:42 "55555" <tachi55...@gmail.com>:

>
>
>
> > お世話になっております。
> > 55555です。
>
> > 自分で作成したActivityからインテント連携にて、他の方が提供してくれた
> > Activityを起動したいの...

> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro-up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -


--

このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

このグループに投稿するには、android-g...@googlegroups.com...

55555

unread,
Sep 7, 2010, 6:04:57 AM9/7/10
to 日本Androidの会
近藤さま

お世話になっております。
55555です。

> Androidmanifest.xmlに記述が必要なのは
> 起動される方のアプリです。
> 起動元には必要ないですよー

起動される側に、起動元のアプリの記述が必要なのでしょうか?
とすると、他者に記述を依頼しないといけないということでしょうか?

よろしくお願いします。


On 9月7日, 午後6:56, Akio Kondo <koji...@gmail.com> wrote:
> こんどうです
>
> Androidmanifest.xmlに記述が必要なのは
> 起動される方のアプリです。
> 起動元には必要ないですよー
>
> ・起動される方のアプリのAndroidmanifest.xmlに記述がない
> ・起動する側のパッケージ名、クラス名が間違っている
>
> のどちらかだと思います。
>
> 2010/9/7 55555 <tachi55...@gmail.com>:
>
>
>
> > こんどうさん
>
> > コメントありがとうございます。
> > Androidmanifest.xmlには、特に記述をしていません。
>
> > 確かに、ExceptionにはAndroidmanifest.xmlへ記述してねと
> > 書かれていますが、Androidmanifest.xmlへActivityの記述を
> > するとビルドできなくなるんですよね。
> > ※エラー内容は、「そんなパッケージ知りません」が英語で出ています。
>
> > ソースを
> > intent.setClassName(pkg, clazz);
> > から
> > intent.setClassName("com.xxxx.yyyy", "com.xxxx.yyyy.zzzz");
> > にしましたが、同様のエラーが出力されました。
>
> > Androidmanifest.xmlは、どのように記述すればよろしいのでしょうか?
>
> > On 9月7日, 午後6:23, Akio Kondo <koji...@gmail.com> wrote:
> >> こんどうです
>
> >> アクティビティのっとふぁうんどえくせぷしょんがでてるので、
> >> 実行したいアクティビティの記述が間違っているか、起動先のアプリのAndroidmanifest.xmlにアクティビティの記述がないのではないでしょうか--?
> >> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro--up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。

Akio Kondo

unread,
Sep 7, 2010, 6:22:33 AM9/7/10
to android-g...@googlegroups.com
こんどうです

起動するアプリのAndroidManifest.xmlに記述漏れがない限りは
依頼する必要はありません。
可能性として、呼び出される側のアプリのManifestに
アクティビティが漏れているのではないかという指摘です。

・起動させるアプリのマニフェストにアクティビティの記述が漏れている
・そもそもパッケージ名、クラス名が間違っている

のどちらかのはずです。

起動する時のパッケージ名、クラス名はあっていますか?
スペルミスはありませんか?
起動するアプリのAndroidManifext.xmlをもし見ることができるのなら
起動したいアクティビティのクラス名を確認してみてください。

2010/9/7 55555 <tachi...@gmail.com>:

sys1yagi

unread,
Sep 7, 2010, 6:58:51 AM9/7/10
to android-g...@googlegroups.com
こんばんは。

とりあえずIntent#setPackage(String packageName)ってやってます?
一番最初のソース見るとsetClassNameしかやってないっぽいですが・・・。
あとはIntent#setComponent(ComponentName component)
でも行けるかと思います。

Akio Kondo

unread,
Sep 7, 2010, 7:09:37 AM9/7/10
to android-g...@googlegroups.com
こんどうです

setClassNameで十分のはずですよー

http://developer.android.com/reference/android/content/Intent.html#setClassName(java.lang.String,
java.lang.String)
にも
Convenience for calling setComponent(ComponentName)
と。

2010/9/7 sys1yagi <sylc...@gmail.com>:

55555

unread,
Sep 7, 2010, 7:34:57 AM9/7/10
to 日本Androidの会
みなさま

55555です。

大変、お騒がせしました。
他者からいただいた資料に誤りがあり、パッケージ名称が異なっていた
ことが原因でした。

#先に、簡単TPを作って確認すべきでした。

申し訳ありませんでした。

こんどうさま、sys1yagiさま
この場をお借りして、お礼を申し上げます。

以上、よろしくお願いします。

On 9月7日, 午後8:09, Akio Kondo <koji...@gmail.com> wrote:
> こんどうです
>
> setClassNameで十分のはずですよー
>
> http://developer.android.com/reference/android/content/Intent.html#se...,
> java.lang.String)
> にも
> Convenience for calling setComponent(ComponentName)
> と。
>
> 2010/9/7 sys1yagi <sylcya...@gmail.com>:
>
>
>
> > こんばんは。
>
> > とりあえずIntent#setPackage(String packageName)ってやってます?
> > 一番最初のソース見るとsetClassNameしかやってないっぽいですが・・・。
> > あとはIntent#setComponent(ComponentName component)
> > でも行けるかと思います。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages