2017-06-29 19 views
-1

私はWi-Fiネットワークを検出するアプリを作成しました。ネットワークを押すと、そのネットワークに関する詳細情報が表示されます。今問題は3年前にAndroid KitKatがユーザーからのポップアップ許可を必要とせず、アンドロイドNで実行したときにスキャンを押してスキャンもポップアップの許可も出さないときに書いたことです。古いアプリはアンドロイドでWiFiスキャン結果を取得できませんN

私は長年アンドロイドをプログラミングしておらず、Androidアプリのコーディング要件の変更についてはわかりません。これがどうして起こるのか?

現在のアプリケーションで使用される権限:マシュマロでのWi-Fiスキャン結果を取得し、以降のために

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

質問は? – Selvin

+0

なぜそれがスキャンされず、ポップアップの許可も与えません –

+0

[mcve]がなければ、誰でもあなたを助けることは非常に難しいでしょう。 – CommonsWare

答えて

2

your app will need to request the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission、及び所在地モードの設定も同様に有効にする必要があります。 documentation for getScanResults()から

最新のスキャンで見つかったアクセスポイントのリスト。アプリは 順に ホールドACCESS_COARSE_LOCATIONまたはACCESS_FINE_LOCATION権が有効な結果

この変更が原因場所はWiFiのスキャン結果から判断することができるという事実のために作られたを取得する必要があります。

Wi-Fiスキャンの結果を表示するには、場所のアクセス権を要求する必要があります。さらに、ユーザーが自分のロケーションモードをオフに設定している場合、アプリはバックグラウンドで実行してもスキャン結果を見ることができません。最低限でそう

、WiFiのスキャン結果を得るためにあなたのマニフェストにACCESS_COARSE_LOCATION権限を追加します

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

をあなたが23より低いターゲットAPIのバージョンを保持する場合は、要求の権限はできません実行時にこの場合、アプリはインストール時に引き続きすべての権限を要求します。

APIをバージョン23以降に更新する場合は、すべての危険な権限を実行時に要求する必要があります。実行時にLocation権限を要求する例については、hereを参照してください。

+0

ありがとうございました。私の問題を抱えた –

関連する問題