【发布时间】:2018-05-25 08:03:04
【问题描述】:
我想在通话屏幕前设置自己的活动。我已经看到有很多示例,但使用的是旧版本的 android,而我希望它适用于 android 6.0 及更高版本。这意味着我必须处理权限。我设法授予了必要的权限。之后,我创建了一个继承 BroadcastReceiver 的类,以便我可以检测到电话何时响起,唯一的问题是我无法在呼叫显示前发送我的活动。这些是我使用的一些类:
public class PhoneStateReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
try {
System.out.println("Receiver start");
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
Toast.makeText(context, " Receiver start ", Toast.LENGTH_SHORT).show();
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
Toast.makeText(context, "Ringing State Number is -", Toast.LENGTH_SHORT).show();
Intent dialogIntent = new Intent(context, LockActivity.class);
dialogIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.startActivity(dialogIntent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class LockActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lock_screen);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
+ WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
+WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
+WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Button btnLock = (Button) findViewById(R.id.btnUnlock);
final EditText txtPass = (EditText) findViewById(R.id.txtPass);
btnLock.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String pass = txtPass.getText().toString();
if(pass.equals("pass")||pass.equals("пасс")) {
finish();
}else{
Toast.makeText(LockActivity.this, "Wrong password!", Toast.LENGTH_SHORT).show();
}
}
});
}
}
如果还有什么需要请咨询!
【问题讨论】:
-
也许这篇关于创建Custom Android Telephony application 的旧帖子有用吗?
-
不,该链接指向一个旧问题,其中的链接不再可用
-
很遗憾,链接的集合看起来很有希望。我是否至少让您正确,并且您想编写一个“电话应用程序”?
-
只是一个来电锁屏的应用。
-
那么抱歉打扰了。祝你好运!
标签: android android-activity broadcastreceiver