2017-08-08 76 views
0

我想测试我的项目是关于短信, 但我在截图不能发短信用Android模拟器

enter image description here

出了问题,这是我的代码:

try { 
     SmsManager smsManager = SmsManager.getDefault(); 
     smsManager.sendTextMessage("5554", null, "SMS text", null, null); 
    } 
    catch (Exception ex){ 
     Toast.makeText(G.context, ex.getMessage(), Toast.LENGTH_LONG).show(); 
    } 

和AndroidManifest:

<uses-permission android:name="android.permission.SEND_SMS" /> 

有人能帮助我?

+0

其中Android操作系统版本的应用程序是在模拟器 –

+1

运行,你可能是你需要实时权限(在Android 6.0及以上)。 –

+0

你有'<使用许可权>'在清单中的正确位置元素; ''标签之外?如果你在运行棉花糖或以上,和你的'targetSdkVersion'为> = 23,你要求在运行时的权限? – Saman

回答

0

您需要runtime permission(在Android 6.0及以上),因为期初的Android 6.0(API等级23),用户授予权限的应用程序,而该应用程序正在运行,而不是在他们安装应用程序时。

试试这个读短信在未经许可的运行

requestSmsPermission(); 

private void requestSmsPermission() { 
    String permission = Manifest.permission.SEND_SMS; 
    int grant = ContextCompat.checkSelfPermission(this, permission); 
    if (grant != PackageManager.PERMISSION_GRANTED) { 
     String[] permission_list = new String[1]; 
     permission_list[0] = permission; 
     ActivityCompat.requestPermissions(this, permission_list, 1); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == 1) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      Toast.makeText(AccountClass.this,"permission granted", Toast.LENGTH_SHORT).show(); 
     // add here send sms code my friend 

     } else { 
      Toast.makeText(AccountClass.this,"permission not granted", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 
+0

感谢@NileshRathod这个代码只是发送短信的工作? – AzadGh

+0

我尝试写这样你对收到的短信代码的代码。我只是换线3,但没有工作。你可以帮我吗 ? – AzadGh

+0

更新你的问题你做了什么改变 –

0

中的onCreate添加grant_permission();()方法,并使用下面的代码

private void grant_permission() { 
     int PERMISSION_ALL = 1; 
     String[] PERMISSIONS = {android.Manifest.permission.SEND_SMS}; 

     if(!hasPermissions(this, PERMISSIONS)){ 
      ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); 
     } 
    } 

    public static boolean hasPermissions(Context context, String... permissions) { 
     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
      for (String permission : permissions) { 
       if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
        return false; 
       } 
      } 
     } 
     return true; 
    }