【问题标题】:Where are permissions declared in Android Studio?Android Studio 中声明的权限在哪里?
【发布时间】:2015-02-08 23:13:19
【问题描述】:

我曾经在我的应用清单中拥有调用权限,但我最近将它们全部删除。我更改了 ACTION_DIAL 的 ACTION_CALL 意图,这不应该要求任何许可。问题是该应用程序仍在请求这些权限...... 那么,为什么会发生这种情况呢?

提前致谢

编辑:我添加了一些代码:

基本上这是我的AndroidManifest.xml 结构:

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity>
            (...)
        </activity>

        <receiver >
            (...)
        </receiver>

        <activity >
            (...)
        </activity>

        <activity>
            (...)
        </activity>

    </application>

</manifest>

为了避免使用任何权限,我已经更改了源代码:

    _call.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (_phone.getText().length() != 0) {
                String uri = "tel:" + _phone.getText();
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(uri));
                startActivity(intent);
            }
        }

    });

我不知道 logcat 有什么用,因为“错误”是应用程序在我要安装它时请求权限,而不是在它运行时

【问题讨论】:

  • 清理和重建您的项目可能会有所帮助。如果没有,请再次检查所有清单。
  • 我刚刚清理并重建了项目。而且我检查了所有的清单(我想我只有一个),问题仍然存在......
  • 如果你能发布你的清单或一些源代码和logcat会更好。
  • “仍在请求这些权限”是什么意思?你是指GP上的发布版本吗?
  • 不在 google play 中,但可以。该应用的发布版本仍然显示需要电话权限

标签: android android-manifest android-permissions


【解决方案1】:

你需要在AndroidManifest.xml添加这个

<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-feature android:name="android.hardware.telephony" android:required="false" />

像你一样使用 Intent.ACTION_DIAL

here is official doc on permission

related answers

【讨论】:

  • 我想我不需要任何 ,那些是用于 ACTION_CALL 而不是 ACTION_DIAL 或 ACTION_VIEW。我错了吗?
  • 你需要这个权限才能拨打一个号码,试试看
  • 问题是我没有权限并且仍然可以工作。我刚刚切换到 ACTION_VIEW 并继续工作...
【解决方案2】:

请尝试以下解决方案之一:

  1. 检查清单的所有权限(your applibrary 文件夹)。某些库可能需要额外的权限。在 Android Studio 中,您应该在 Project 模式下浏览清单(不是左侧面板的 Packages/Android 视图模式):project_name/src/main/manifest.xml

  2. 如果所有清单都清楚,请将use-featureandroid:required="false" 添加到您的主项目清单中。这将告诉 GP 您的应用可以安装在没有电话的设备上,例如平板电脑。

像这样:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.my.app"  >
<uses-feature android:name="android.hardware.telephony" android:required="false"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity>
        (...)
    </activity>

    <receiver >
        (...)
    </receiver>

    ...

</application>

  1. 清理并重建您的项目
  2. 最后但同样重要的是,将新版本上传到 Google Play 后,尝试停用旧版本(以防 google play 保留两个版本)。
  3. 最终,创建新项目并将源代码拖放到新项目中。

【讨论】:

  • 我已经 以防万一它有用。我的清单中没有权限,但仍然要求他们...
  • 好吧...如果权限在代码中的任何地方我找不到它们...问题是我想在未经许可的情况下使用拨号/查看操作,我以前使用过,所以我删除了它们......但应用程序仍然要求它们
  • 好吧,然后我添加了最后一次尝试,我完成了线程。
  • 似乎没有任何效果,所以我保留了原来的权限...无论如何感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2017-06-28
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
相关资源
最近更新 更多