gpt4 book ai didi

android - 以编程方式接受 Nougat 中的调用

转载 作者:IT王子 更新时间:2023-10-28 23:32:21 28 4
gpt4 key购买 nike

从一年开始,我一直在研究 IOT 产品,并且附加的应用程序运行良好。现在我无法在更高版本的android中以编程方式接受调用。功能对产品来说非常重要。非常感谢任何帮助。

在安全补丁更新 2016 年 11 月 之前,Runtime.getRunTime.exec("Command") 可以正常工作,可以以编程方式接受调用。

Runtime.getRuntime().exec("input keyevent " +Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));

如何在 Nougat 版本的 android 中实现。

寻找任何形式的黑客攻击。

我已经为增强功能打开了一个线程。

https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby=&sort=&id=231938

注意*如果你们中的任何人遇到同样的问题,那么请请求 Android 开发团队 加入并提供获得运行时许可的条件用户。按照上面提到的 URL 请求。

最佳答案

由于我也在研究物联网产品,这是我面临的最大问题之一,但经过一些研究,我想我已经找到了解决这个问题的方法,或者你可以说一个简单的 hack。我已经在几个版本的设备上测试了这个 hack,发现大多数设备都有响应。只有三星设备没有响应,一些华为设备和一些 Oppo 设备也没有响应。(我也在寻找这些设备的东西)。

我注意到 Android 提供了访问通知的一项功能。您可以使用 NotificationListenerService 来读取通知并对它们执行一些操作。它提供了一些覆盖方法:

 onNotificationPosted()
onNotificationRemoved()
getActiveNotifications()

...等

这是一个代码:创建一个扩展 NotificationListenerService 的服务

 class NLService extends NotificationListenerService {

@Override
public void onNotificationPosted(StatusBarNotification sbn) {
....
}

@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
....
}

在 AndroidMenifest 中,将此服务添加为:

 <service
android:name=".NLService"
android:label="@string/app_name"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action
android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>

这将允许您的应用程序读取收到的任何通知。

现在,这里是主要代码:

在 onNotificationPosted(StatusBarNotification sbn) 中添加以下代码:

 @Override
public void onNotificationPosted(StatusBarNotification sbn) {
try {
if (sbn.getNotification().actions != null) {
for (Notification.Action action : sbn.getNotification().actions)
{
Log.e(TAG, "" + action.title);
if (action.title.toString().equalsIgnoreCase("Answer")) {
Log.e(TAG, "" + true);
PendingIntent intent = action.actionIntent;

try {
intent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

就是这样!

一切就绪,运行应用程序和除三星以外的设备,无论哪个显示来电通知,带有接听和拒绝/拒绝操作按钮,您都可以接听电话。

要打开通知访问设置并允许您的应用程序读取通知,请使用:

 Intent intent = new 
Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);

只需为此创建一个 POC,然后告诉我它是如何工作的。

如果有帮助,请标记我的答案。

另外,如果您可以针对三星设备提供一些解决方案,请更新。

谢谢

关于android - 以编程方式接受 Nougat 中的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com