2010-08-09 6 views
1

저는 초심자 인 안드로이드 프로그래머입니다. 인 텐트가 실제로 어떻게 작동하는지 이해하는 데 도움이되도록, 사용자가 원하는 액션과 데이터로 startActivity()를 호출 할 수있는 작은 액티비티를 구성하려고했습니다. "android.intent.action.VIEW"및 "http://www.google.com"을 포함하여 여러 가지 조합을 시도했습니다. 내가 어떤 조합을 사용하든 관계없이 항상 ActivityNotFoundException이 발생합니다. 왜 어떤 아이디어? ActivityNotFound 예외가 계속 발생하는 이유는 무엇입니까?

내에서만 활동의 코드

은 다음과 같습니다 : 단지 '강제 종료'를 접촉 한 후 다음과 같습니다 앱을 시작하는 시간부터 ADB 쉘 로그 캣의

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

     Button goButton = (Button) findViewById(R.id.button); 

     goButton.setOnClickListener(new ClickListener()); 
    } 

    private class ClickListener implements OnClickListener 
    { 
     @Override 
     public void onClick(View arg0) 
     { 
      String id = ((EditText) findViewById(R.id.intent)).getText().toString(); 
      String data = ((EditText) findViewById(R.id.data)).getText().toString(); 

      Builder builder = new Builder(); 
      builder = builder.path(data); 

      Uri path = builder.build(); 

      Intent i = new Intent(id, path); 
      startActivity(i); 
     } 
    } 
} 

결과.

I/ActivityManager(1086): 
Starting activity: Intent { act=android.intent.action. 
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=tk.h2g2guy.testin 
gIntents/.TestingIntents } 
I/ActivityManager(1086): Start proc tk.h2g2guy.testingIntents for activity tk.h 
2g2guy.testingIntents/.TestingIntents: pid=4037 uid=10054 gids={} 
D/dalvikvm(1006): GC_EXPLICIT freed 289 objects/10960 bytes in 98ms 
D/dalvikvm(1006): GC_EXPLICIT freed 47 objects/2088 bytes in 121ms 
D/dalvikvm(1006): GC_EXPLICIT freed 2 objects/48 bytes in 109ms 
I/ActivityManager(1086): Displayed activity tk.h2g2guy.testingIntents/.TestingI 
ntents: 462 ms (total 462 ms) 
D/dalvikvm(2300): GC_EXPLICIT freed 1226 objects/61640 bytes in 69ms 
I/ActivityManager(1086): Starting activity: Intent { act=android.intent.action. 
VIEW dat=http%3A//www.google.com } 
D/AndroidRuntime(4037): Shutting down VM 
W/dalvikvm(4037): threadid=1: thread exiting with uncaught exception (group=0x4 
001d7e0) 
E/AndroidRuntime(4037): FATAL EXCEPTION: main 
E/AndroidRuntime(4037): android.content.ActivityNotFoundException: No Activity 
found to handle Intent { act=android.intent.action.VIEW dat=http%3A//www.google. 
com } 
E/AndroidRuntime(4037):  at android.app.Instrumentation.checkStartActivit 
yResult(Instrumentation.java:1408) 
E/AndroidRuntime(4037):  at android.app.Instrumentation.execStartActivity 
(Instrumentation.java:1378) 
E/AndroidRuntime(4037):  at android.app.Activity.startActivityForResult(A 
ctivity.java:2817) 
E/AndroidRuntime(4037):  at android.app.Activity.startActivity(Activity.j 
ava:2923) 
E/AndroidRuntime(4037):  at tk.h2g2guy.testingIntents.TestingIntents$Clic 
kListener.onClick(TestingIntents.java:41) 
E/AndroidRuntime(4037):  at android.view.View.performClick(View.java:2408 
) 
E/AndroidRuntime(4037):  at android.view.View$PerformClick.run(View.java: 
8816) 
E/AndroidRuntime(4037):  at android.os.Handler.handleCallback(Handler.jav 
a:587) 
E/AndroidRuntime(4037):  at android.os.Handler.dispatchMessage(Handler.ja 
va:92) 
E/AndroidRuntime(4037):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(4037):  at android.app.ActivityThread.main(ActivityThrea 
d.java:4627) 
E/AndroidRuntime(4037):  at java.lang.reflect.Method.invokeNative(Native 
Method) 
E/AndroidRuntime(4037):  at java.lang.reflect.Method.invoke(Method.java:5 
21) 
E/AndroidRuntime(4037):  at com.android.internal.os.ZygoteInit$MethodAndA 
rgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime(4037):  at com.android.internal.os.ZygoteInit.main(Zygot 
eInit.java:626) 
E/AndroidRuntime(4037):  at dalvik.system.NativeStart.main(Native Method) 

W/ActivityManager(1086): Force finishing activity tk.h2g2guy.testingIntents/. 
TestingIntents 
W/ActivityManager(1086): Activity pause timeout for HistoryRecord{449d4518 tk.h 
2g2guy.testingIntents/.TestingIntents} 
I/Process (4037): Sending signal. PID: 4037 SIG: 9 
I/ActivityManager(1086): Process tk.h2g2guy.testingIntents (pid 4037) has died. 

I/WindowManager(1086): WIN DEATH: Window{44bd4120 tk.h2g2guy.testingIntents/tk. 
h2g2guy.testingIntents.TestingIntents paused=false} 

답변

2

다양한 조합으로 당신의 Activity의 정의를 누락 생각 "안드로이드 .intents.action.VIEW "및 "html : //www.google.com "

android.intents.action.VIEW은 (는) 유효한 활동이 아닙니다. s을 삭제하려고합니다.

html://www.google.com은 유효한 URL이 아닙니다. html://http://으로 대체하려고합니다.

+0

그리고 ... 교정을하지 않을 때 일어나는 일입니다. 지적 해 주셔서 고맙습니다. 그러나 실제로 응용 프로그램에서 올바른 양식을 사용했습니다. 아직도 작동하지 않습니다. – Mrrvomun

+0

@ Mrrvomun :'Builder '에 대한 모든 참조를 삭제하고 (필요 없어) 입력 된 텍스트를'Intent'에 넣으십시오. – CommonsWare

+0

데이터 매개 변수의 의미는 무엇입니까? 이클립스는 나에게 오류를 제공하고 두 문자열을 전달하는 생성자를 찾을 수 없습니다. setData 메소드에는 Uri 객체도 필요합니다. – Mrrvomun

1

와 로그를 확인 :

adb shell logcat 

하지만 난 당신이 를 포함하여 내가 노력 AndroidManifest.xml

+1

+1 - AndroidManifest.xml 또한 내 추측입니다. –

+0

AndroidManifest.xml 파일에 주된 유일한 활동이 있습니다. 나는 이클립스에서 일하고있다. 그래서 나는 그것이 엉망이되지 않는다고 확신한다. – Mrrvomun

+0

질문을 해당 로그와 함께 편집하십시오. – Macarse

관련 문제