2013-03-14 45 views
1

基本上我有同樣的問題在How to implement my very own URI scheme on Android如何使用Android自定義URL架構的意圖?

描述我跟着從回答問題的說明,並添加到我的Android清單:

<activity android:name=".MyUriActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="myapp" android:host="path" /> 
    </intent-filter> 
</activity> 

而且,我添加了一個新的活動是這樣的:

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

public class MyUriActivity extends Activity { 
    @Override 
    public void onCreate(Bundle b){ 
     System.out.println("URI CLICKED!"); 
    } 
} 

我的Android應用程序是基於PhoneGap的,所以我只是簡單地添加這樣一個鏈接到我的index.html:

<a href="myapp://foo">Click me</a> 

當我點擊,我在控制檯中看到以下錯誤:

03-14 12:23:16.177: E/Cordova(629): Error loading url myapp://foo 
03-14 12:23:16.177: E/Cordova(629): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=myapp://foo } 
03-14 12:23:16.177: E/Cordova(629):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545) 
03-14 12:23:16.177: E/Cordova(629):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416) 
03-14 12:23:16.177: E/Cordova(629):  at android.app.Activity.startActivityForResult(Activity.java:3351) 
03-14 12:23:16.177: E/Cordova(629):  at android.app.Activity.startActivityForResult(Activity.java:3312) 
03-14 12:23:16.177: E/Cordova(629):  at android.app.Activity.startActivity(Activity.java:3522) 
03-14 12:23:16.177: E/Cordova(629):  at android.app.Activity.startActivity(Activity.java:3490) 
03-14 12:23:16.177: E/Cordova(629):  at org.apache.cordova.CordovaWebViewClient.shouldOverrideUrlLoading(CordovaWebViewClient.java:209) 
03-14 12:23:16.177: E/Cordova(629):  at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:274) 
03-14 12:23:16.177: E/Cordova(629):  at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:376) 
03-14 12:23:16.177: E/Cordova(629):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-14 12:23:16.177: E/Cordova(629):  at android.os.Looper.loop(Looper.java:137) 
03-14 12:23:16.177: E/Cordova(629):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
03-14 12:23:16.177: E/Cordova(629):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-14 12:23:16.177: E/Cordova(629):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-14 12:23:16.177: E/Cordova(629):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
03-14 12:23:16.177: E/Cordova(629):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
03-14 12:23:16.177: E/Cordova(629):  at dalvik.system.NativeStart.main(Native Method) 

所以好像我缺少的活動。怎麼了?

回答

2
  1. 你沒有打電話給super.onCreate(b);
  2. 網址myapp://foo不符合您的IntentFilter。它應該是myapp://path/或者您可以更改IntentFilter並刪除host部分。

    <data android:scheme="myapp"/>