【问题标题】:Android Marshmallow Permission for my eclipse project not working我的 Eclipse 项目的 Android Marshmallow 权限不起作用
【发布时间】:2016-09-06 06:46:34
【问题描述】:

我使用 Eclipse IDE 创建了一个应用程序。现在它在棉花糖上崩溃了各种权限说联系。经过大量搜索,我没有找到任何结果。

在来自 Manifest.permission.CONTACTS 的 CONTACT 上的 checkSelfPermission、requestPermissions 等中显示错误。

我认为解决方案适用于 android studio 项目。因此,如果有人知道,请让我知道 Eclipse 项目。

【问题讨论】:

标签: java android eclipse android-6.0-marshmallow android-permissions


【解决方案1】:

我在任何地方都找不到此权限:Manifest.permission.CONTACTS

只有两个联系权限:

  1. READ_CONTACTS
  2. WRITE_CONTACTS

你应该使用这两个。只有联系人会给你错误。

【讨论】:

  • 你好 Sagar,Actaully 我在谷歌搜索后跟踪了一个示例,该代码仅来自那里。我已经实现了 if (ContextCompat.checkSelfPermission(this, Manifest.permission_group.CONTACTS) != PackageManager.PERMISSION_GRANTED) 但出现红线错误: ContextCompat 类型的方法 checkSelfPermission(HomeActivity, String) 未定义
【解决方案2】:

更新最新版本Android 支持库

并且在 Android Private Library 中只添加了一个也是最后一个版本的 android-support-v4.jar。

【讨论】:

    【解决方案3】:

    Appart from the READ_CONTACTS/WRITE_CONTACTS 问题:为了解决checkSelfPermission() not found 在 Eclipse 中,您可以将 android-support-compat.jar 从 https://github.com/dandar3/android-support-compat/tree/28.0.0 添加到 libs 文件夹Eclipse 项目并再次编译。

    【讨论】:

      【解决方案4】:

      完整的工作演示

      你弄错了这里没有像CONTACTS这样的权限只有READ_CONTACTS和WRITE_CONTACTS

      正确的是Manifest.permission.READ_CONTACTS; 而不是Manifest.permission.CONTACTS;

      public class MainActivity extends AppCompatActivity {
      
          private Context context;
          private Button button;
          private static final int REQUEST_RUNTIME_PERMISSION = 123;
          private String permission = Manifest.permission.READ_CONTACTS;
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              button = (Button) findViewById(R.id.button);
              button.setOnClickListener(new View.OnClickListener() {
                  @Override
      
                  public void onClick(View v) {
                      if (CheckPermission(MainActivity.this, permission)) {
                          // you have permission go ahead
                          YouCanReadContactNow();
                      } else {
                          // you do not have permission go request runtime permissions
                          RequestPermission(MainActivity.this, permission, REQUEST_RUNTIME_PERMISSION);
                      }
                  }
              });
          }
      
          private void YouCanReadContactNow() {
          }
      
      
          @Override
          public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
      
              switch (permsRequestCode) {
                  case REQUEST_RUNTIME_PERMISSION: {
                      if (grantResults.length > 0
                              && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                          // you have permission go ahead
                          YouCanReadContactNow();
                      } else {
                          // you do not have permission show toast.
                      }
                      return;
                  }
              }
          }
      
          public void RequestPermission(Activity thisActivity, String Permission, int Code) {
              if (ContextCompat.checkSelfPermission(thisActivity,
                      Permission)
                      != PackageManager.PERMISSION_GRANTED) {
                  if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
                          Permission)) {
                  } else {
                      ActivityCompat.requestPermissions(thisActivity,
                              new String[]{Permission},
                              Code);
                  }
              }
          }
      
          public boolean CheckPermission(Context context, String Permission) {
              if (ContextCompat.checkSelfPermission(context,
                      Permission) == PackageManager.PERMISSION_GRANTED) {
                  return true;
              } else {
                  return false;
              }
          }
      }
      

      布局

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/base"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@color/white"
          android:orientation="horizontal">
      
      
          <Button
              android:id="@+id/button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              android:layout_centerHorizontal="true"
              android:layout_margin="10dp"
              android:text="Request contact permissions"
              android:textSize="20dp" />
      
      </RelativeLayout>
      

      【讨论】:

      • 谢谢索希尔。但是我遇到了问题: ContextCompat 类型的方法 checkSelfPermission(Activity, String) 未定义, ActivityCompat 类型的方法 shouldShowRequestPermissionRationale(Activity, String) 未定义, requestPermissions(Activity, String[], int) 方法是ActivityCompat 类型未定义,ContextCompat 类型的方法 checkSelfPermission(Context, String) 未定义
      • 你添加了 appcompat v4 库吗?
      • 你为什么搬到安卓工作室?
      • 没有 Sohail,它有 appcompat_v7 库。该项目是用 eclipse 构建的,所以在那里尝试。并且不了解Android Studio。将安装和学习
      • 如果仅适用于android studio,答案如何才能接受。仅针对日食提出问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2016-11-09
      • 1970-01-01
      相关资源
      最近更新 更多