相关疑难解决方法(0)

以编程方式在android中启用/禁用数据连接

我想以编程方式启用/禁用数据连接.我使用了以下代码:

void enableInternet(boolean yes)
{
    ConnectivityManager iMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    Method iMthd = null;
    try {
        iMthd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
        } catch (Exception e) {
               } 
    iMthd.setAccessible(false);

    if(yes)
     {

                try {
                    iMthd.invoke(iMgr, true);
                    Toast.makeText(getApplicationContext(), "Data connection Enabled", Toast.LENGTH_SHORT).show();
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                     dataButton.setChecked(false);
                     Toast.makeText(getApplicationContext(), "IllegalArgumentException", Toast.LENGTH_SHORT).show();

                } catch (IllegalAccessException e) {
                    // TODO Auto-generated catch block
                    Toast.makeText(getApplicationContext(), "IllegalAccessException", Toast.LENGTH_SHORT).show();

                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    // TODO Auto-generated catch block
                     dataButton.setChecked(false);
                     Toast.makeText(getApplicationContext(), "InvocationTargetException", Toast.LENGTH_SHORT).show();

                } …
Run Code Online (Sandbox Code Playgroud)

android gprs invocationtargetexception

47
推荐指数
1
解决办法
7万
查看次数

如何检查应用是否是Android中的非系统应用?

我正在ApplicationInfo使用packageManager.getInstalledApplications(0)获取对象列表,并尝试根据它们是否是系统应用程序对它们进行分类.

有一段时间我一直在使用这里描述的技术,但是在我的应用程序中看到之后,一些应用程序不在非系统应用程序列表中(例如Facebook,当可用时要求系统在SD上安装自己)卡).在下次阅读ApplicationInfo.FLAG_SYSTEM的实际文档并了解它实际上没有过滤系统应用程序之后,我现在正在寻找一种新方法.

我的猜测是,系统和非系统应用程序的UID之间存在很大差距,我可以收集这些差异来进行区分,但到目前为止我还没有找到答案.我也查看了其他标志,例如ApplicationInfo.FLAG_EXTERNAL_STORAGE,我支持API 1.5.

有没有人有这个真正的解决方案(不涉及FLAG_SYSTEM)?

android system uid android-applicationinfo

35
推荐指数
9
解决办法
4万
查看次数

Oreo(API 26) - drawOverlay +绘制状态栏

在android oreo中,我不能再使用WindowManager.LayoutParams.TYPE_SYSTEM_ERROR了,必须使用WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY.缺点是,此模式不会覆盖状态栏.

反正有没有实现旧的行为,并能够绘制状态栏?我有一个侧边栏应用程序,直到现在,我允许用户在屏幕顶部也有触发区域,现在不再工作,因为状态栏现在重叠在顶部的可触摸区域...

我对任何解决方案感兴趣,即使它仅适用于某些设备,例如root设备......因为我认为这个问题没有正常的解决方案,因为android系统不再允许这样做,如文档中所述(https://developer.android.com/about/versions/oreo/android-8.0-changes.html#o-apps).不过,这并不意味着没有替代解决方案......

permissions android overlay android-windowmanager android-8.0-oreo

15
推荐指数
1
解决办法
3620
查看次数