[英]Expanding Notification Bar Android Studio
我正在嘗試在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清單文件
<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();
}
}
}
僅在OnCreate函數中調用GetPermission()方法。
java.lang.NoSuchMethodException: expand []
錯誤提示android.app.StatusBarManager
類沒有名稱為expand的方法。您可以在此處檢查此類的方法。
android.app.StatusBarManager
將expandNotificationsPanel
為
展開通知面板。
然后在代碼中,我們應該找到帶有反射的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();
}
}
需要添加所需的權限,即:“ android.permission.EXPAND_STATUS_BAR”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.