gpt4 book ai didi

java - Android Studio 扩展通知栏

转载 作者:行者123 更新时间:2023-12-02 01:42:56 24 4
gpt4 key购买 nike

我正在尝试在 android studio 中以编程方式展开通知栏。我尝试使用以下代码:-

private void ExpandNotificationBar(){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.EXPAND_STATUS_BAR) != PackageManager.PERMISSION_GRANTED)
return;

try{
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method expand = statusbarManager.getMethod("expand");
expand.invoke(service);
}
catch (Exception e){
Log.e("StatusBar", e.toString());
Toast.makeText(getApplicationContext(), "Expansion Not Working", Toast.LENGTH_SHORT).show();
}
}

但是这会返回

java.lang.NoSuchMethodException: expand []

我无法找到任何解决方案,因为该方法甚至不在官方 API 中。

感谢任何帮助。谢谢。

编辑:
我目前只在模拟器中尝试过该方法。如果我在尝试实际智能手机时发现任何新内容,我会再次在这里发布。

EDIT_v2:在实际设备上尝试过。但没有成功。我注意到的一件事是,没有向用户请求许可。尽管我正在检查它。

Android list 文件

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

请求许可

private void GetPermissions(){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.EXPAND_STATUS_BAR) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.EXPAND_STATUS_BAR}, 1);
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode){
case 1: {
if(grantResults.length == 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED)
Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
}
}
}

GetPermission() 方法仅在 OnCreate 函数中调用。

最佳答案

java.lang.NoSuchMethodException: expand []

此错误表示 android.app.StatusBarManager 类没有名为 Expand 的方法。您可以检查此类的方法 here .

android.app.StatusBarManagerexpandNotificationsPanel

Expand the notifications panel.

然后在代码中我们应该找到带有反射的expandNotificationsPanel方法

private void ExpandNotificationBar(){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.EXPAND_STATUS_BAR) != PackageManager.PERMISSION_GRANTED)
return;

try{
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method expand = statusbarManager.getMethod("expandNotificationsPanel"); //<-
expand.invoke(service);
}
catch (Exception e){
Log.e("StatusBar", e.toString());
Toast.makeText(getApplicationContext(), "Expansion Not Working", Toast.LENGTH_SHORT).show();
}
}

关于java - Android Studio 扩展通知栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54198094/

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