2016-06-28 3 views
0

私はこのcodeを使用している上で動作していない、と私は検索ビューは、マップAPI

if(intent.getAction().equals(Intent.ACTION_SEARCH)) 

でこの条件を偽の値を取得していますので、ビューが動作していない検索します。助けをお待ちしています。

MapsActivity

public class MapsActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Cursor>,OnMapReadyCallback { 
    private GoogleMap mMap; 
    private PopupMenu supportMenuInflater; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mMap = fragment.getMap(); 
     Log.e("MAP"," load"); 
     handleIntent(getIntent()); 
    } 

    private void handleIntent(Intent intent){ 
     Log.e("handle intent"," load"+intent); 

     Log.e("handle intent"," rate "+intent.getAction().equals(Intent.ACTION_SEARCH)); 

     if(intent.getAction().equals(Intent.ACTION_SEARCH)) 
     { 
      Log.e("handle intent"," if"+intent.getAction().equals(Intent.ACTION_SEARCH)); 
      doSearch(intent.getStringExtra(SearchManager.QUERY)); 
     } 
     else if(intent.getAction().equals(Intent.ACTION_VIEW)) 
     { 
      Log.e("handle intent"," else if"); 
      getPlace(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY)); 
     } 
     else 
     { 
      Log.e("handle intent"," else"); 
     } 
    } 

    @Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     setIntent(intent); 
     handleIntent(intent); 
    } 

    private void doSearch(String query){ 
     Log.e("Dosearch"," load "+query); 
     Bundle data = new Bundle(); 
     data.putString("query", query); 
     getSupportLoaderManager().restartLoader(0, data, this); 
    } 

    private void getPlace(String query){ 
     Log.e("getPlace"," load "+query); 
     Bundle data = new Bundle(); 
     data.putString("query", query); 
     getSupportLoaderManager().restartLoader(1, data, this); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu 
     getMenuInflater().inflate(R.menu.main, menu); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
      SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
      search.setIconifiedByDefault(false); 
      search.setSearchableInfo(manager.getSearchableInfo(getComponentName())); 
      search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextChange(String query) { 
        doSearch(query); 
        return true; 
       } 

       @Override 
       public boolean onQueryTextSubmit(String query) { 
        return false; 
       } 
      }); 
     } 
     return true; 
    } 

    @Override 
    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     switch(item.getItemId()){ 
      case R.id.action_search: 
       onSearchRequested(); 
       break; 
     } 
     return super.onMenuItemSelected(featureId, item); 
    } 
    @Override 
    public Loader<Cursor> onCreateLoader(int arg0, Bundle query) { 
     CursorLoader cLoader = null; 
     if(arg0==0) 
      cLoader = new CursorLoader(getBaseContext(), PlaceProvider.SEARCH_URI, null, null, new String[]{ query.getString("query") }, null); 
     else if(arg0==1) 
      cLoader = new CursorLoader(getBaseContext(), PlaceProvider.DETAILS_URI, null, null, new String[]{ query.getString("query") }, null); 
     return cLoader; 
    } 

    @Override 
    public void onLoadFinished(Loader<Cursor> arg0, Cursor c) { 
     showLocations(c); 
    } 

    @Override 
    public void onLoaderReset(Loader<Cursor> arg0) { 
     // TODO Auto-generated method stub 
    } 

    private void showLocations(Cursor c){ 
     MarkerOptions markerOptions = null; 
     LatLng position = null; 
     mMap.clear(); 
     while(c.moveToNext()){ 
      markerOptions = new MarkerOptions(); 
      position = new LatLng(Double.parseDouble(c.getString(1)),Double.parseDouble(c.getString(2))); 
      markerOptions.position(position); 
      markerOptions.title(c.getString(0)); 
      mMap.addMarker(markerOptions); 
     } 
     if(position!=null){ 
      CameraUpdate cameraPosition = CameraUpdateFactory.newLatLng(position); 
      mMap.animateCamera(cameraPosition); 
     } 
    } 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Add a marker in Sydney and move the camera 
     LatLng sydney = new LatLng(-34, 151); 
     Log.e("OnReady", String.valueOf(sydney)); 
     mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 

} 

答えて

0
Error Was in Manifest file 

    enter code here 
<uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <!-- Protect the map component of the application using application signature --> 
    <permission 
     android:name="com.example.user.demo.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <!-- Allows to receive map --> 
    <uses-permission android:name="com.example.user.demo.MAPS_RECEIVE" /> 

    <!-- Used by the Google Maps Android API V2 to download map tiles from Google Maps servers --> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <!-- Allows the Google Maps Android API V2 to cache map tile data in the device's external storage area --> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <!-- Allows the Google Maps Android API V2 to use WiFi or mobile cell data (or both) to determine the device's location --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

    <!-- Allows the Google Maps Android API V2 to use the Global Positioning System (GPS) 
    to determine the device's location to within a very small area --> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <!-- Allows to contact Google Serves --> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

    <!-- Google Maps Android API V2 requires OpenGL ES version 2 --> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <application 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.AppCompat" > 
     <activity 
      android:name=".MapsActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" > 
      <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.SEARCH" /> 
      </intent-filter> 

      <!-- Points to searchable activity --> 
      <meta-data android:name="android.app.default_searchable" 
       android:value=".MainActivity" /> 

      <!-- Points to searchable meta data --> 
      <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable"/> 

     </activity> 

     <provider 
      android:name=".PlaceProvider" 
      android:authorities="com.example.user.demo.PlaceProvider" 
      android:exported="false" /> 

     <!-- Specifies the Android API Key, which is obtained from Google API Console --> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="--------------------------------" /> 

    </application> 
関連する問題