2011-03-29 60 views
3

我試圖攔截谷歌地圖意圖如下所示:如何在Android中攔截谷歌地圖意圖?

意圖myIntent =新意圖(android.content.Intent.ACTION_VIEW,Uri.parse( 「地理:37.423156,-122.084917」));

但我還沒有找到任何示例,鏈接或此文檔。所以,我想這不幸是不可能的。

在Manifest文件中,我放了幾個意圖過濾器。特別我認爲下一個意圖過濾器必須符合上述意圖。

<intent-filter> 
<action android:name="android.content.Intent.ACTION_VIEW" /> 
     <data android:scheme="geo"/> 
    </intent-filter> 

此外,我試圖調查藉助這個特別的意圖匹配什麼樣的活動:

List resolves = getPackageManager().queryIntentActivities(myIntent, 0); 
ResolveInfo firstRevolve=(ResolveInfo) resolves.get(0); 
IntentFilter myIF=firstRevolve.filter; 

然而僅MapsActivity的意圖,不是我的活動相匹配,而令人驚訝的myIF爲空,所以我無法獲取Google地圖活動使用的意圖過濾器。

另外我安裝了Android Market的「Intent Intercept」,但它並沒有捕獲這個意圖。

所以,我需要一些幫助/想法。有人知道發生了什麼?在我看來,Google限制了這種截取,但是這個限制沒有被規定。

任何幫助將不勝感激。 最好的問候, 巴勃羅。

回答

1

所以,我在想,不幸的是不可能的。

我確定它是。

特別是我認爲下一個意圖過濾器必須符合上述意圖。

您的操作字符串錯誤。如果你讀了documentationACTION_VIEW的字符串表示:

android.intent.action.VIEW 

這是不是你在你的<intent-filter>

5

下面的代碼示例在我的項目中正常工作。

<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="https" android:host="maps.google.com" /> 
    <data android:scheme="geo" /> 
</intent-filter> 
0

我一直試圖讓這個工作。似乎有幾個方法在這裏:

1)intents with scheme:「http」或「https」,授權爲「maps.google.com」。這似乎按標準意圖正常工作。 2)使用問題中提到的OP的「地理」方案。似乎這是不公開的被攔截。

@CommonsWare 即使使用「android.intent.action。VIEW」的清單與以下過濾器: ,

似乎可以攔截它

當你提到‘我寧願相信它是’,你的意思是IS可能也IS NOT可能

1

此清單項工作對我來說:?

<activity 
     <intent-filter> 
      <!-- Filter to run activity without geo --> 
      <action android:name="com.example.MYACTION" />     
      <category android:name="android.intent.category.DEFAULT" />      
     </intent-filter> 
     <intent-filter> 
      <!-- Filter for geo scheme geo -->     
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" />    
      <data android:scheme="geo" /> 
     </intent-filter> 
    </activity> 

在您的活動,您可以檢查的onCreate:

protected void onCreate(Bundle savedInstanceState) { 
    Intent intent = getIntent(); 
    String action = intent.getAction(); 
    Uri data  = intent.getData(); 

    if(  Intent.ACTION_VIEW.equals(action)) { 
    if(data != null && "geo".equals(data.getScheme())) { 

     // do something with geo uri data 
    } 
    } 
    else { 
    // Code for activity when it`s started without geo uri 
    } 
} 
0

我用多意圖過濾器,並與我

  <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="google.navigation"/> 
      </intent-filter> 

      <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:host="maps.google.com" 
        android:scheme="https"/> 
      </intent-filter> 

      <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:host="maps.google.com" 
        android:scheme="http"/> 
      </intent-filter> 
這項工作