拨打 Android 10
Make a call on Android 10
我制作了一个应用程序,如果预先配置的代码以短信形式到达,它会自动拨打电话。
我最初在 Android 9 上构建这个应用程序,只要我使用 Android 9,它就运行良好,但我的 phone 升级到 Android 10版本,它刚刚停止工作。
分析日志并调试应用程序,没有出现任何错误消息。调试一切正常,我称活动如下:
Intent in = new Intent(Intent.ACTION_CALL);
in.setData(Uri.parse(callPhone));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
但是没有任何反应。它只是不打电话。我在使用其他版本 android 的其他设备上安装并且仍然有效,但在 Android 10.
中无效
有人知道是否实施了一些不同的东西,或者是否有一种新的方法来调用 Android 10 版本?
*注意:我还尝试更新代码以使用 androidx 库,因为更改为使用 targetSdkVersion 29,但仍然相同。
Android 10 仅限从后台开始 activity。这有一些例外情况。在我看来,请求 "SYSTEM_ALERT_WINDOW" 许可是最简单的方法。希望对你有帮助。
https://developer.android.com/guide/components/activities/background-starts
清单中:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
代码中的某处
private void RequestPermission() {
// Check if Android M or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Show alert dialog to the user saying a separate permission is needed
// Launch the settings activity if the user prefers
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getActivity().getPackageName()));
startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(getContext())) {
PermissionDenied();
}
else
{
//Permission Granted-System will work
}
}
}
我制作了一个应用程序,如果预先配置的代码以短信形式到达,它会自动拨打电话。
我最初在 Android 9 上构建这个应用程序,只要我使用 Android 9,它就运行良好,但我的 phone 升级到 Android 10版本,它刚刚停止工作。
分析日志并调试应用程序,没有出现任何错误消息。调试一切正常,我称活动如下:
Intent in = new Intent(Intent.ACTION_CALL);
in.setData(Uri.parse(callPhone));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
但是没有任何反应。它只是不打电话。我在使用其他版本 android 的其他设备上安装并且仍然有效,但在 Android 10.
中无效有人知道是否实施了一些不同的东西,或者是否有一种新的方法来调用 Android 10 版本?
*注意:我还尝试更新代码以使用 androidx 库,因为更改为使用 targetSdkVersion 29,但仍然相同。
Android 10 仅限从后台开始 activity。这有一些例外情况。在我看来,请求 "SYSTEM_ALERT_WINDOW" 许可是最简单的方法。希望对你有帮助。
https://developer.android.com/guide/components/activities/background-starts
清单中:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
代码中的某处
private void RequestPermission() {
// Check if Android M or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Show alert dialog to the user saying a separate permission is needed
// Launch the settings activity if the user prefers
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getActivity().getPackageName()));
startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(getContext())) {
PermissionDenied();
}
else
{
//Permission Granted-System will work
}
}
}