小编Arc*_*hit的帖子

让DrawerLayout滑过ActionBar

我在一个活动中有一个滑动抽屉菜单,它有一个动作栏,上面有一些标签.

我想让滑动抽屉滑过标签,而不是它们下方.

这就是它现在的样子......

操作栏选项卡下的滑动菜单

关于如何做到这一点的任何想法?

注意:我知道我可能在这里打破了一些约定和UI模式,如果它根本不起作用,我会看一些替代方案.但我想先让它工作.

编辑:请参阅下面的Google Play音乐应用屏幕截图,该应用完全符合我的需求.请参阅下面@ CommonsWare的答案,他确实同意我可能违反惯例.但是,鉴于播放音乐应用程序,它可能也不是那么罕见.

正确导航,标签正确滑动

android slidingdrawer android-ui android-actionbar android-tabs

25
推荐指数
2
解决办法
3万
查看次数

清除另一个应用程序的数据

我正在编写一个应该能够清除任何其他应用程序的私有数据的应用程序.如果您想知道用例,它就像MDM/MAM客户端一样.我想有选择地擦除应用程序数据(相对于完整的设备擦除).

我在Android源代码中遇到了以下API调用.

ActivityManager.clearApplicationUserData(String packageName,IPackageDataObserverobserver)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,作为SDK的一部分,您并不真正可以使用它.(所以日食会让你试图使用它).但是,它存在(参见这里),你可以通过反射调用它.但是,我仍然无法获得IPackageDataObserver接口.

有没有更好的方法呢?我知道可以做到这一点,因为我看到像MaaS360这样的产品会对应用程序的数据进行选择性擦除.

有什么建议?


UPDATE

基于@lechlukasz在下面概述的内容......以下代码可以执行...但是您最终会使用SecurityException,因为程序包管理器在安装应用程序时会撤消CLEAR_APP_USER_DATA权限.

Class<?> iPackageDataObserverClass= Class.forName("android.content.pm.IPackageDataObserver");

Class<ActivityManager> activityManagerClass=ActivityManager.class;
ActivityManager activityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

Method clearDataMethod=activityManagerClass.getMethods()[0];

Object iPackageDataObserverObject = Proxy.newProxyInstance(
    MyApp.class.getClassLoader(), new Class[]{iPackageDataObserverClass}, 
                        new InvocationHandler() {

            public Object invoke(Object proxy, Method method, Object[] args) 
                    throws Throwable {
                Log.i("Proxy", method.getName() + ": " + Arrays.toString(args));
                return null;
            }
        });


clearDataMethod.invoke(activityManager, "com.example.test",iPackageDataObserverObject);
Run Code Online (Sandbox Code Playgroud)

所以这可行,只要可以调用该方法.实际上没有运气能够清除数据本身.:-(

android

6
推荐指数
1
解决办法
3212
查看次数