代码之家  ›  专栏  ›  技术社区  ›  Ayoub k

uid没有android.permission.send_短信

  •  0
  • Ayoub k  · 技术社区  · 6 年前

    我正在尝试将消息(SMS)从一个模拟器发送到另一个模拟器:

    androidmanifest.xml文件

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="eheio.com.exo2">
    
        <uses-permission android:name="android.permission.SEND_SMS"/>
    
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            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>
        </application>
    
    </manifest>
    

    发送消息方法:

    public void sendMessage(View view) {
            EditText number = findViewById(R.id.number);
            EditText message = findViewById(R.id.message);
            try {
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(number.getText().toString(), null, message.getText().toString(), null, null);
                Toast.makeText(getApplicationContext(), "SMS Sent!", Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), "SMS failed, please try again later!", Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        }
    

    我有以下例外:

    java.lang.securityException:发送短消息:uid 10082没有android.permission.send_短消息。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jeffrey Blattman    6 年前

    对于初学者,您可以通过执行以下操作来检查授予应用程序的权限:

    adb shell dumpsys package <your package>
    

    你会看到类似的情况:

    grantedPermissions:
      android.permission.MANAGE_ACCOUNTS
      android.permission.WRITE_SYNC_SETTINGS
      android.permission.RECEIVE_BOOT_COMPLETED
    

    这个 android.permission.SEND_SMS 许可是 dangerous 保护等级。这意味着从API 23开始,您需要提示用户接受权限。在清单中声明它的使用是不够的。你可以在这里读到: https://developer.android.com/guide/topics/permissions/overview#dangerous-permission-prompt