2015-02-08 124 views
1

我曾经在我的应用清单中拥有呼叫保留,但我最近删除了它们。我改变了我的ACTION_CALL intent for ACTION_DIAL,这不应该要求任何许可。事情是,该应用程序仍然要求这些权限... 那么,为什么会发生这种情况呢?Android Studio中声明的权限在哪里?

在此先感谢

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

基本上这是我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将是有益的,会导致“错误”是应用程序要求的权限,当我要安装它,而不是当它运行

+0

清理并重建您的项目可能会有帮助。如果不是,请再次检查所有清单。 – 2015-02-09 00:00:41

+0

我刚刚清理并重建了该项目。我已经检查了所有清单(我认为我只有一个清单),问题仍然存在... – fapps 2015-02-09 00:06:38

+0

如果您可以发布您的清单或某些源代码和logcat,那更好。 – 2015-02-09 01:27:44

回答

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

+0

我认为我不需要任何<使用权限>,这些是针对ACTION_CALL而不是ACTION_DIAL或ACTION_VIEW。我错了吗? – fapps 2015-02-09 08:33:46

+0

您需要此权限才能拨打号码,请试试看 – Saqueib 2015-02-09 08:35:13

+0

问题是我没有权限,仍然有效。我刚刚切换到ACTION_VIEW,并继续工作... – fapps 2015-02-09 08:46:18

0

请尝试这些溶胶的一个utions:

  1. 检查所有舱单的权限(您的应用程序文件夹)。某些库可能需要额外的权限。在Android Studio中,您应该浏览项目模式下的清单(不是左侧面板的软件包/ 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> 

  • 清理和重建项目
  • 最后但并非最不重要的,上传新版本的谷歌播放后,尝试停用旧版本(如果谷歌播放保留两个版本)。
  • 最终,创建新项目并将源代码拖放到新项目中。
  • +0

    我已经<添加使用功能>,以防万一它可能是有用的。我没有在我的清单许可,仍然要求他们...... – fapps 2015-02-09 08:47:31

    +0

    那么...如果权限是在代码中的任何地方,我找不到他们......事情是,我想使用拨号/查看操作未经许可,我以前使用过,所以我删除了它们...但应用程序仍然要求他们 – fapps 2015-02-09 09:50:30

    +0

    好吧,然后我添加了最后的最后一次尝试,我完成了线程。 – 2015-02-09 10:16:08