这里简单用一个打电话的例子,监听使用自己定义的类实现接口,
package com.example.wentaozhou.phone;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.security.Permission;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private int My_Permission_Request_Call=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText) findViewById(R.id.et_phone);
Button button=(Button) findViewById(R.id.bt_call);
button.setOnClickListener(new MyButtonListener());
}
public void callPhone(){
String phone=editText.getText().toString().trim();
if("".equals(phone)){
Toast.makeText(MainActivity.this,"号码不为空",Toast.LENGTH_SHORT).show();
}
else{
//创建一个意图对象
Intent intent=new Intent();
//设置意图动作
intent.setAction(Intent.ACTION_CALL);
//设置意图数据
intent.setData(Uri.parse("tel://"+phone));
//开启界面,根据行为做事情
startActivity(intent);
}
}
//内部类
class MyButtonListener implements View.OnClickListener{
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
//如果没有授权,申请授权,
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, My_Permission_Request_Call);
}
else {
callPhone();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode==My_Permission_Request_Call) {
//允许授权
if(grantResults[0]==PackageManager.PERMISSION_GRANTED) {
callPhone();
}
else{
Toast.makeText(MainActivity.this,"没有权限",Toast.LENGTH_SHORT).show();
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
最后效果如下: