【问题标题】:Android 6.0.1 - Permission issue = wifiManager.getScanResults() returns 0Android 6.0.1 - 权限问题 = wifiManager.getScanResults() 返回 0
【发布时间】:2016-10-18 19:34:34
【问题描述】:

permissionsList.add() 不起作用,但 MainActivity.this.requestPermissions() 工作正常。问题是它带来了一个对话框,询问用户是否允许位置权限。

为什么添加权限不起作用?

有没有办法避开对话框?

在下面查看我的最小代码:

public class MainActivity extends AppCompatActivity {
WifiManager wifiManager;
WifiBroadcastReceiver broadcastReceiver;

Context context;


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

    context = getApplicationContext();

    List<String> permissionsList = new ArrayList<String>();
    permissionsList.add(Manifest.permission.ACCESS_FINE_LOCATION);
    permissionsList.add(Manifest.permission.ACCESS_COARSE_LOCATION);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if(checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            MainActivity.this.requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 100);
            MainActivity.this.requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 100);
            }
        }

        Button scan = (Button) findViewById(R.id.scan);

        wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        wifiManager.setWifiEnabled(true);

        scan.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
               if(wifiManager != null)
                    wifiManager.startScan();
            }
        });


        broadcastReceiver = new WifiBroadcastReceiver();

        // On attache le receiver au scan result
        registerReceiver(broadcastReceiver, new IntentFilter(
                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

    }

    public class WifiBroadcastReceiver extends BroadcastReceiver {

        private WifiManager wifiManager;


        @Override
        public void onReceive(Context context, Intent intent) {
            wifiManager = ((MainActivity) context).getCurrentWifiManager();
            List<ScanResult> listeScan = wifiManager.getScanResults();
          }
    }


    public WifiManager getCurrentWifiManager() {
        return wifiManager;
    }

 }

这里是 manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bernard_zelmans.checksecurity">

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_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>
        <activity android:name=".Ping"></activity>
    </application>

</manifest>

【问题讨论】:

    标签: android android-permissions wifimanager


    【解决方案1】:

    从 Android 6.0(API 级别 23)开始,用户授予以下权限 应用程序运行时的应用程序,而不是在他们安装应用程序时。这 方法简化了应用程序安装过程,因为用户不 需要在安装或更新应用程序时授予权限。它也是 让用户更好地控制应用程序的功能;例如, 用户可以选择让相机应用程序访问相机,但不能 到设备位置。用户可以随时撤销权限 时间,通过转到应用程序的设置屏幕。

    资源和更多阅读:

    【讨论】:

    • 这个可以理解。这就是我在代码开头添加权限的原因。那没有用。只有请求权限有效。缺点是要求用户允许/拒绝权限的对话框。
    • 据我所知,该对话框没有解决办法。
    • 重新阅读您的观点,这只是请求而不是添加的选择。为什么会有 add 方法?在我看来,当我使用相机安装应用程序时,它会在安装过程中询问我?位置特别吗?我会重新阅读文档。
    • 嗯...不容易。我是我的
    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2020-12-31
    • 1970-01-01
    • 2016-12-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多