私がMarshmallowにアップグレードすると、アプリケーションが動作を停止しました。WiFi接続を変更することができましたが、今は何もしません。Android 6.0でアプリケーション(Wi-Fi接続)がもう動作しません。Marshmallow
私はAndroid 6.0の新しいアクセス許可モデルについて読んだことがあります。うーん、すごいですが、古いアプリは引き続き動作するはずです...とにかく、私は許可の付与を実装しようとしましたが、これは通常の許可であり、アンドロイドのマニフェストで定義されている場合、許可要求は行われません。
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
許可は常にAndroidマニフェストにあります。私が正しく理解していれば、それは「通常の許可」のため動作するはずです。だから、なぜそれは動作しません、誰かが解決策を持っていますか?以来があったことCHANGE_WIFI_STATE権限は、あります前に述べたようにAndroidManifestで
public static void connectToWifi(Context context, String ssid, String password) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
// setup a wifi configuration
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"" + ssid + "\"";
wc.preSharedKey = "\""+ password + "\"";
wc.status = WifiConfiguration.Status.ENABLED;
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
// connect to and enable the connection
int netId = wifiManager.addNetwork(wc);
wifiManager.enableNetwork(netId, true);
wifiManager.setWifiEnabled(true);
}
:
protected void connectWifi() {
if ((!connectedToAccessPoint(settings.getMainConnectionName()))
&& (accessPointIsAvailable(settings.getMainConnectionName()))) {
ConnectionUtils.connectToWifi(this,
settings.getMainConnectionName(),
settings.getMainConnectionPassword());
Toast.makeText(this,
"Connecting to " + settings.getMainConnectionName(),
Toast.LENGTH_LONG).show();
handler.postDelayed(sendUpdatesToUI,
DelayConstants.BASIC_REQUEST_SENT);
handler.postDelayed(sendUpdatesToUI,
DelayConstants.CHANGE_CONNECTION);
}
}
そして、ここでの接続のための技術的な部分:私の場合に関連するコードの断片を追加
Android 6.0を搭載していない端末でアプリが実行されていた
[mcve]を入力してください。誰もあなたに見えないコードを教えてくれる人はいません。 – CommonsWare
@CommonsWare申し訳ありませんが、私はいつもやっていますが、今回は私がここに投稿する必要があることを他の人に知らせることはありませんでしたか?どんなコードが正確に必要ですか?また、私はコンセプトを正しく理解していることを確認できますか?私はこの許可を与える許可をしてはいけないのですか? –
"ほかに何を投稿する必要がありますか?" - 「WiFi接続を変更できると思われる」コードを投稿し、「何もしない」という内容を確認することができます。 "私はこの許可を与える許可をしてはいけないのですか?" - それはAndroid 6.0の通常の許可なので、特別なことをする必要はありません。しかし、他のものが変更されています(例えば、 'WifiManager.getScanResults()'はロケーション許可を必要とし、 'WifiConfiguration'への変更は制限されています)。 – CommonsWare