2014-12-08 5 views
0

phonegap 용 WebIntent 플러그인을 사용하여 안드로이드에서 위치 설정을 열려고합니다. 나는 GPSDetector 플러그인을 사용하여 전화 갭을 감지하여 위치가 활성 상태인지 여부를 감지하고 활성 상태가 아닌 경우 위치 설정을 열고 싶습니다. 위치를 활성화 한 후 뒤로 버튼을 누르고 index.html로 이동하십시오.어떻게 phonegap을 사용하여 안드로이드에서 위치 설정을 열 수 있습니까?

window.plugins.webintent.startActivity({ 
     action: 'android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS'}, 
     function() {}, 
     function() {alert('Failed to open URL via Android Intent')} 
); 

이 경우 나는 어떤 행동인지 알지 못하지만, 나는 이것을 시도했지만 작동하지 않았습니다. 나는 활동을 한 거기에 내가에서 onCreate 방법에 추가 :

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0); 

을하지만이 방법으로 나는 그가 위치 (GPS)를 켠 후 다시 index.html을 사용자를 보내는 방법을 모르겠어요. 많은 도움과 고마워

답변

0

사용 가능한 플러그인을 사용하지 않았습니다. 내 자신의 플러그인을 썼는데 이것은 그 플러그인의 자바 코드이다. 도움이되는지 확인하십시오. 그것은 나를 위해 귀하의 요구 사항으로 작동합니다.

if (CHECK_LOCATION_SERVICES_ENABLED.equals(action)) 
    { 
     try 
     { boolean locationServicesEnabled=false; 
      if(this.ctx.getContext()!=null) 
      { 
       //Location services not enabled 

       final Context context = this.ctx.getContext(); 
       (new Thread(new Runnable() { 

        @Override 
        public void run() { 
         Looper.prepare(); 

         final Handler innerHandler = new Handler() { 
          @Override 
          public void handleMessage(Message message) { 
           /*Toast.makeText(myContext,android.os.Build.VERSION.RELEASE, 
           Toast.LENGTH_LONG).show();*/                 
           LocationManager lm = null; 
           boolean gps_enabled=false,network_enabled=false; 
           if(lm==null) 
            lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
           try{ 
           gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); 
           }catch(Exception ex){} 
           try{ 
           network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
           }catch(Exception ex){} 

           if(!gps_enabled && !network_enabled){ 
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(
              context); 

            alertDialog.setTitle("FindMe"); 

            alertDialog 
              .setMessage("You must enable Location Services for using FindMe.\nDo you want to go to Location Sources Settings?"); 

            alertDialog.setPositiveButton("Settings", 
              new DialogInterface.OnClickListener() { 
               public void onClick(DialogInterface dialog, int which) { 
                Intent intent = new Intent(
                  Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
                context.startActivity(intent); 
               } 
              }); 

            alertDialog.setNegativeButton("Cancel", 
              new DialogInterface.OnClickListener() { 
               public void onClick(DialogInterface dialog, int which) { 
                dialog.cancel(); 
               } 
              }); 

            alertDialog.show(); 

           } 
          } 

          @Override 
          public void dispatchMessage(Message message) { 
           handleMessage(message); 
          } 
         }; 

         Message message = innerHandler.obtainMessage(); 
         innerHandler.dispatchMessage(message); 
         Looper.loop(); 
        } 
       })).start(); 

      } 
      return new PluginResult(PluginResult.Status.OK,"success ");    
     }      
     catch (Exception ex) 
     {       
      Log.d("FindMePlugin", ex.toString()); 
      return new PluginResult(PluginResult.Status.ERROR, "error"+ex.toString()); 
     }    
    } 
+0

어도비 네이티브 코드로 내 CordovaActivity에서 어제 문제를 해결했습니다. – user3114107