我想在我的应用程序中使用public static final int DISABLE_NOTIFICATION_ALERTS声明的内部StatusBarManager,下面提到的是我的应用程序中的代码摘录
Object object = getSystemService("statusbar");
Class<?> statusBarManager;
try {
statusBarManager = Class.forName("android.app.StatusBarManager");
Method[] method = statusBarManager.getMethods();
Field fld[] = statusBarManager.getDeclaredFields();
for (int i = 0; i < fld.length; i++) {
String s = fld[i].toString();
}
Class name = object.getClass();
Field field = statusBarManager
.getDeclaredField("DISABLE_NOTIFICATION_ALERTS");
android.util.Log.i("MainActivity", "value of::: " + field);
Method disable = statusBarManager.getMethod("disable",
new Class[] { int.class });
disable.setAccessible(true);
field.setAccessible(true);
disable.invoke(object,new Integer(262144));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
Log.i("MAinActivity::", "No Such Class Found Exception");
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
Log.i("MAinActivity::", " Exception occur");
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
内 AndroidManifest.xml
<permission
android:name="android.permission.STATUS_BAR_SERVICE"
/>
Run Code Online (Sandbox Code Playgroud)
例外情况如下
01-01 11:45:59.504: W/System.err(676): java.lang.reflect.InvocationTargetException
01-01 11:45:59.514: W/System.err(676): at java.lang.reflect.Method.invokeNative(Native Method)
01-01 11:45:59.514: W/System.err(676): at java.lang.reflect.Method.invoke(Method.java:511)
01-01 11:45:59.514: W/System.err(676): at com.example.stopmms.MainActivity.onCreate(MainActivity.java:90)
01-01 11:45:59.514: W/System.err(676): at android.app.Activity.performCreate(Activity.java:5008)
01-01 11:45:59.514: W/System.err(676): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
01-01 11:45:59.514: W/System.err(676): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
01-01 11:45:59.514: W/System.err(676): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
01-01 11:45:59.514: W/System.err(676): at android.app.ActivityThread.access$600(ActivityThread.java:130)
01-01 11:45:59.514: W/System.err(676): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
01-01 11:45:59.514: W/System.err(676): at android.os.Handler.dispatchMessage(Handler.java:99)
01-01 11:45:59.524: W/System.err(676): at android.os.Looper.loop(Looper.java:137)
01-01 11:45:59.524: W/System.err(676): at android.app.ActivityThread.main(ActivityThread.java:4745)
01-01 11:45:59.524: W/System.err(676): at java.lang.reflect.Method.invokeNative(Native Method)
01-01 11:45:59.524: W/System.err(676): at java.lang.reflect.Method.invoke(Method.java:511)
01-01 11:45:59.524: W/System.err(676): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-01 11:45:59.534: W/System.err(676): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-01 11:45:59.534: W/System.err(676): at dalvik.system.NativeStart.main(Native Method)
01-01 11:45:59.534: W/System.err(676): Caused by: java.lang.SecurityException: StatusBarManagerService: Neither user 10045 nor current process has android.permission.STATUS_BAR.
01-01 11:45:59.544: W/System.err(676): at android.os.Parcel.readException(Parcel.java:1425)
01-01 11:45:59.544: W/System.err(676): at android.os.Parcel.readException(Parcel.java:1379)
01-01 11:45:59.544: W/System.err(676): at com.android.internal.statusbar.IStatusBarService$Stub$Proxy.disable(IStatusBarService.java:324)
01-01 11:45:59.544: W/System.err(676): at android.app.StatusBarManager.disable(StatusBarManager.java:91)
01-01 11:45:59.544: W/System.err(676): ... 17 more
Run Code Online (Sandbox Code Playgroud)
它给了我上面提到的例外
小智 5
您必须使用权限:
<uses-permission android:name="android.permission.STATUS_BAR" />
但是,您只能在系统应用中使用此权限.因此,如果您希望在应用程序上拥有此权限,则必须将其安装为系统应用程序,只能在root设备上完成.
| 归档时间: |
|
| 查看次数: |
7459 次 |
| 最近记录: |