相关疑难解决方法(0)

Android - onRequestPermissionsResult() 已弃用。有没有其他选择?

我试图实现从存储中写入和读取的请求权限。一切正常,但今天 Android 向我展示了 onRequestPermissionsResult(...) 方法已被弃用。StackOverflow 中有很多关于这个主题的问题,但不幸的是,它们已经过时了。

我在一个片段中调用了下面的方法。

建议简单地调用:

requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
StorageKeys.STORAGE_PERMISSION_CODE)
Run Code Online (Sandbox Code Playgroud)

而不是我的方法:

ActivityCompat.requestPermissions(getActivity(),
new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
StorageKeys.STORAGE_PERMISSION_CODE))
Run Code Online (Sandbox Code Playgroud)

但它们都表明 onRequestPermissionsResult(...) 已被弃用。

这是我的 onRequestPermissionsResult(...) 方法:

  @Override
  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                         @NonNull int[] grantResults) {

    if (requestCode == StorageKeys.STORAGE_PERMISSION_CODE) {

      if (grantResults.length > 0
          && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

        exportBibTex.createBibFile();
        exportBibTex.writeBibFile(exportBibTex
            .getBibDataLibrary(libraryModel, bookDao, noteDao));

        Toast.makeText(getContext(),
            getString(R.string.exported_file_stored_in) + '\n'
                + File.separator + StorageKeys.DOWNLOAD_FOLDER + File.separator + fileName
                + StorageKeys.BIB_FILE_TYPE, Toast.LENGTH_LONG).show();

      } else {
        Toast.makeText(getContext(), R.string.storage_permission_denied,
            Toast.LENGTH_SHORT).show();
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

这是一个简单的警报对话框,我在其中调用 …

java permissions android request deprecated

22
推荐指数
3
解决办法
1万
查看次数

ActivityCompat.requestPermissions无效

调用ActivityCompat.requestPermissions不会显示UI对话框.

ActivityCompat.requestPermissions(MainActivity.this, new String[]{"Manifest.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS);
Run Code Online (Sandbox Code Playgroud)

但是,如果我将minSDKversion更改为23并运行

requestPermissions(new String[]{"android.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS);
Run Code Online (Sandbox Code Playgroud)

出现对话框.为什么?BTW.要在模拟器上运行它,模拟器将以API 23为目标.

android android-6.0-marshmallow

8
推荐指数
1
解决办法
2万
查看次数

ActivityCompat.requestPermissions不显示提示

我正在尝试请求ACCESS_FINE_LOCATION权限以获取用户的当前位置.

我的日志记录表明我的应用程序在查询时当前没有此权限ContextCompat.checkSelfPermission(),但是在ActivityCompat.requestPermissions()显示任何内容时都显示.

我的谷歌地图代码(实施OnMapReadyCallbackActivityCompat.OnRequestPermissionsResultCallback())是在FragmentActivity.

我已经设法让该requestPermissions()功能在应用程序中的其他活动中成功运行,它只是带有Google地图的那个.放置在onCreate()方法中Activity或在onMapReady()(需要去的地方)时它不起作用.

if(ContextCompat.checkSelfPermission(LocationActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        Log.d(TAG, "not granted");
        final String[] permissions = new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION};
    if(ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.ACCESS_FINE_LOCATION)) {
            Log.d(TAG, "rationale");
            // Explain to the user why permission is required, then request again
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("We need permissions")
                    .setCancelable(false)
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            ActivityCompat.requestPermissions(LocationActivity.this, permissions, 1);
                    } …
Run Code Online (Sandbox Code Playgroud)

java android google-maps android-fragments android-permissions

7
推荐指数
1
解决办法
5639
查看次数