Eme*_*ick 4 android android-10.0
我制作了一个应用程序,如果预先配置的代码通过短信到达,它会自动拨打电话。
我最初在 Android 9 上构建这个应用程序,只要我使用 Android 9,它就可以正常工作,但我的手机升级到 Android 10 版本后,它就停止工作了。
分析日志并调试应用程序,没有出现任何错误消息。调试一切正常,我将活动称为如下:
Intent in = new Intent(Intent.ACTION_CALL);
in.setData(Uri.parse(callPhone));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
Run Code Online (Sandbox Code Playgroud)
但什么也没发生。它只是不打电话。我在使用其他版本 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"/>
Run Code Online (Sandbox Code Playgroud)
在你的代码中的某个地方
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |