2012-09-19 2 views
2

Android 휴대 전화에서 Siri와 유사한 보조 앱을 사용합니다. 보조자가 나를 다른 곳으로 안내하기를 원할 때마다 내장 Google (또는 Android) 탐색 앱이 자동으로 표시됩니다. 이제는 (약간 다른 일을하면서) 내 앱을 만들었습니다. 내비게이션 명령이 실행될 때 팝업되고 Google 앱과 경쟁 할 수 있도록 다음과 같이 기본 앱으로 사용하도록 선택할 수 있도록 제공해야 할 서비스는 무엇입니까?android, 내비게이션 서비스 제공

감사합니다.

+0

시도의 목록 http://stackoverflow.com/a/4392898/802469 – Jakar

답변

5

Tung Mai Le의 의견에 응답하도록 업데이트되었습니다.

google.navigation 인 텐트를 처리하도록 앱을 나열하려면 이전 프로그램을 테스트 해보기 위해 작은 프로그램을 만들었습니다. 문제가 어디에 있는지 잘 모르겠습니다. 안드로이드 4.0 HTC 전화에서 실행

, 당신이 사용하거나 안드로이드의 버전 확실하지 않다 장치는 (등

완전한 매니페스트

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.navigation.com" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="15" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:scheme="google.navigation" /> 
      </intent-filter> 
     </activity> 
    </application> 

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

</manifest> 

전체 코드를 뿌리 경우 더

package com.navigation.com; 

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

public class MainActivity extends Activity { 

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

     mIntent = getIntent(); 
     if (parseNavigationIntent(mIntent)) { 

     { 
    } 

    private Intent mIntent = null; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 


     return true; 
    } 
} 



private boolean parseNavigationIntent(Intent intent) { 

    if (null == intent) 
     return false; 

    String scheme = intent.getScheme(); 

    if (null==scheme || (!scheme.equals("google.navigation") && !scheme.equals("geo"))) 
     return false; 

    String data; 

    if (null == (data = intent.getData().getSchemeSpecificPart())) 
     return false; 

    // parse data to get longitude, latitude, and possible address dependent on callers 
    // formatting 

    return true; 

} 

나는 구글지도에서 탐색을 활성화하고, 로빈에서, 모두가 내 앱 목록을 생성하고 선택하면 그것은 INT 인식) 구문 분석을 시도합니다 등등.

Robin의 기본값으로 Google 탐색기 (또는 귀하 이외의 다른 프로그램)를 사용하기 위해 체크 박스를 선택했다면 앱이 시작되지 않습니다.

더 이상 기본 환경 설정 관련 없었다 있도록 로빈의 데이터를 삭제해야 할 것 (핵 옵션의 종류 그러나 내가이 취소 동료에 볼 수있는 유일한 방법) 내가 사용하도록 설정하면

내 애플 리케이션은 항상 그냥 시작하고 나에게 올바른 구성표 및 데이터 패키지를 주었다. 의도를 시작할 수 있습니다 응용 프로그램 (나의 네비게이션 테스트입니다)

Robin

My App Listed when navigation was pushed

+0

와 로빈을 보여주는

스크린 샷 약속하고, 시험해 보입니다! 많이. –

+1

안녕하세요 Idistic, 나는 그것을 시도했지만 내 앱이 탐색 의도를 파악할 수없는 것 같습니다. 무엇을 확인해야합니까? –

+0

@TungMaiLe 어떤 앱이 인 텐트를 생성하고 있으며 어떤 앱이 현재 해당 목록을 처리하고 있습니까? – Idistic