不论请求结果成功与否,回调函数onRequestPermissionsResult都不会被执行。贴上代码,求大神看看到底是哪里的问题?我用得是小米4全网通版,MIUI 8 6.8.18开发版,Android版本6.0.1MMB29M。
private final static int SEND_SMS_REQUEST_CODE = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msg);
Button button = (Button) findViewById(R.id.send_btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (getAndroidSDKVersion() >= 23){
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
//申请CALL_PHONE权限
ActivityCompat.requestPermissions(MsgActivity.this, new String[]{Manifest.permission.SEND_SMS},
SEND_SMS_REQUEST_CODE);
}
}
EditText num = (EditText) findViewById(R.id.num_et);
EditText context = (EditText) findViewById(R.id.context_et);
SmsManager manager = SmsManager.getDefault();
ArrayList<String> list = manager.divideMessage(context.getText().toString());
int count = 0;
for (String s : list){
manager.sendTextMessage(num.getText().toString(),null,s,null,null);
count++;
if (list.size() == 1){
Toast.makeText(getApplicationContext(),"信息发送成功!",Toast.LENGTH_SHORT).show();
}else if (list.size() == 0){
Toast.makeText(getApplicationContext(),"信息内容为空!",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"发送第"+count+"条短信成功!共"+list.size()+"条",Toast.LENGTH_SHORT).show();
}
} }
});
} @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Toast.makeText(MsgActivity.this, "onRequestPermissionsResult被调用!", Toast.LENGTH_SHORT).show();
doNext(requestCode,grantResults);
} private void doNext(int requestCode, int[] grantResults) {
if (requestCode == SEND_SMS_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted准许
Toast.makeText(this,"已获得授权!",Toast.LENGTH_SHORT).show(); } else {
// Permission Denied拒绝
Toast.makeText(this,"未获得授权!",Toast.LENGTH_SHORT).show();
}
}
} public static int getAndroidSDKVersion() {
int version = 0;
try {
version = Integer.valueOf(android.os.Build.VERSION.SDK);
} catch (NumberFormatException e) {
Log.i("errTag", e.toString());
}
return version;
}
private final static int SEND_SMS_REQUEST_CODE = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_msg);
Button button = (Button) findViewById(R.id.send_btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (getAndroidSDKVersion() >= 23){
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
//申请CALL_PHONE权限
ActivityCompat.requestPermissions(MsgActivity.this, new String[]{Manifest.permission.SEND_SMS},
SEND_SMS_REQUEST_CODE);
}
}
EditText num = (EditText) findViewById(R.id.num_et);
EditText context = (EditText) findViewById(R.id.context_et);
SmsManager manager = SmsManager.getDefault();
ArrayList<String> list = manager.divideMessage(context.getText().toString());
int count = 0;
for (String s : list){
manager.sendTextMessage(num.getText().toString(),null,s,null,null);
count++;
if (list.size() == 1){
Toast.makeText(getApplicationContext(),"信息发送成功!",Toast.LENGTH_SHORT).show();
}else if (list.size() == 0){
Toast.makeText(getApplicationContext(),"信息内容为空!",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"发送第"+count+"条短信成功!共"+list.size()+"条",Toast.LENGTH_SHORT).show();
}
} }
});
} @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Toast.makeText(MsgActivity.this, "onRequestPermissionsResult被调用!", Toast.LENGTH_SHORT).show();
doNext(requestCode,grantResults);
} private void doNext(int requestCode, int[] grantResults) {
if (requestCode == SEND_SMS_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted准许
Toast.makeText(this,"已获得授权!",Toast.LENGTH_SHORT).show(); } else {
// Permission Denied拒绝
Toast.makeText(this,"未获得授权!",Toast.LENGTH_SHORT).show();
}
}
} public static int getAndroidSDKVersion() {
int version = 0;
try {
version = Integer.valueOf(android.os.Build.VERSION.SDK);
} catch (NumberFormatException e) {
Log.i("errTag", e.toString());
}
return version;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货