2016-11-21 5 views
0

この問題に関するさらに別の質問。重複して申し訳ありませんが、私はずっと見てきましたが、まだこれを動作させることはできません。私のwebpage navigator.geolocation関数は、このエラーを返します。アプリケーションに十分なジオロケーションのパーミッションがありません。許可を受けるかどうかは、ユーザーに尋ねることはありません。すべてがデスクトップ上のさまざまなブラウザで動作します(Chrome、ff、Safari、つまり10 +)。アンドロイドスタジオsdk v23 webview get geolocation

私はアンドロイドスタジオでエミュレータを実行しています...携帯電話のタイプはnexus 5 api 23(アンドロイド6.0)です。

ここで私は今では、このために持っているコードのhodgpodgeです:

//私のmainActivity.javaファイル:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mWebView = (WebView) findViewById(R.id.activity_main_webview); 
    WebSettings mWebSettings = mWebView.getSettings(); 
    mWebSettings.setJavaScriptEnabled(true); 
    String userAgent = mWebView.getSettings().getUserAgentString() ; 
    mWebSettings.setUserAgentString(userAgent); 

    mWebSettings.setBuiltInZoomControls(true); 
    mWebSettings.setAppCacheEnabled(true); 
    mWebSettings.setDatabaseEnabled(true); 
    mWebSettings.setDomStorageEnabled(true); 
    mWebSettings.setAllowFileAccess(true); 
    mWebSettings.setAllowContentAccess(true); 
    mWebSettings.setGeolocationEnabled(true); 
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

    mWebView.clearCache(true); 
    mWebView.clearHistory(); 
    mWebView.clearView(); 
    mWebView.loadUrl("https://mywebsite.com"); 


    mWebView.setWebChromeClient(new WebChromeClient() 
    { 
     @Override 
     public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { 
      callback.invoke(origin, true, false); 
     } 

etc... 

//私のandroid manifestファイル:

<?xml version="1.0" encoding="utf-8"?> 

は、
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.CAMERA"></uses-permission> 
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_GPS" /> 
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

私は立ち往生していません。これが可能なのかどうか疑問に思っています...人々にこれを働かせる方法は?!?!?!?平野活動は、あなたがAppCompatActivityを使用しないと仮定すると、

答えて

0

が、これはトリックを行います。

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
//your code 
     ActivityCompat.requestPermissions(getActivity(), new String[]{ 
       android.Manifest.permission.ACCESS_COARSE_LOCATION, 
       android.Manifest.permission.ACCESS_FINE_LOCATION 
     }, 0); 
//your code 
} 

はAndroidの6、APIレベル23から開始し、許可の扱いが変更されました。実行時にユーザーからの重要な機能(場所など)を明示的に許可する必要があります。