我有一个ListView,其中包含已安装的应用程序列表,对于每个应用程序,我需要知道是否启用了通知.目前我正在使用下面的代码来了解是否启用了通知:
appOpsClass = Class.forName(AppOpsManager.class.getName());
Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE, String.class);
Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);
int value = (int)opPostNotificationValue.get(Integer.class);
return ((int)checkOpNoThrowMethod.invoke(mAppOps,value, appUID, appPackage) == AppOpsManager.MODE_ALLOWED);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
引起:java.lang.SecurityException:uid 10062没有android.permission.UPDATE_APP_OPS_STATS.W/System.err:在android.os.Parcel.readException(Parcel.java:1683)W/System.err:在android.os.Parcel.readException(Parcel.java:1636)W/System.err:at com .android.internal.app.IAppOpsService $存根$ Proxy.checkOperation(IAppOpsService.java:343)
我已经包括在内了
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的错误.使用什么apis我可以得到它是否被阻止的值
由于 android 从 Android 设置导航回来的方式,我的用户体验不一致。
在我的应用程序中,用户需要授予我的应用程序访问权限ACTION_USAGE_ACCESS_SETTINGS,我通过以下方式访问:
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在为我的应用程序将设置切换为打开后,我需要用户返回到我的应用程序。据我所知,这样做的唯一方法是让他们按下手机上的后退按钮(很想知道是否可以在切换设置后自动返回!!!?!)。
现在将发生两件事之一:
1) 用户最近没有使用android设置,所以它没有打开(即在打开的应用程序抽屉中打开)。第一次按下后退按钮将根据需要将它们带到我的应用程序。
2) 用户最近使用过安卓设置。因此设置已经在应用程序抽屉中打开。现在,当用户按下返回键时,Android 会将他们带回他们最近使用过的每个设置页面(即后退按钮带他们查看他们在 android 设置页面中的历史记录)。可能需要按 2、3 或 4 次后退按钮才能离开 Android 设置并返回到我的应用程序。这显然是糟糕的 UI/UX,我想知道是否有更好的方法?
我注意到在安装 Google 应用程序时,将设置切换为 ON 后,它会自动退出并返回到调用该设置的应用程序。能够做到这一点是理想的,但我无法解决。
谢谢!
我知道可以通过这种方式以编程方式更改设置:
Settings.Secure.putInt(getContentResolver(),Settings.Secure.ADB_ENABLED, 1);
Run Code Online (Sandbox Code Playgroud)
但也有一些设置Developer Options未既不提供Settings.Secure,Settings.Global也不是Settings.System.
例如Simulate color space,添加的选项Api 21

还有其他方法可以访问它吗?
我正在使用PreferenceFragmentCompat,但我不认为它的风格正确.
首选项的标题似乎很大,PreferenceCategory文本是不可读的,整个想法似乎是关闭.
这就是我在theme.xml中的内容
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
<style name="PreferenceThemeOverlay">
<item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item>
<item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
<item name="preferenceCategoryStyle">@style/Preference.Category</item>
<item name="preferenceStyle">@style/Preference</item>
<item name="preferenceInformationStyle">@style/Preference.Information</item>
<item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item>
<item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>
<item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item>
<item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference
</item>
<item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
</style>
Run Code Online (Sandbox Code Playgroud) android android-appcompat android-support-library android-settings
背景:Display Size除了之前现有的更改功能外,Android N还具有从设置更改系统的功能Font Size.
更改显示尺寸:
图像来源:pcmag.com
问题:
如果应用程序android.permission.WRITE_SETTINGS有权更改设置,有多种方法可以编程方式更改系统字体大小,如如何以编程方式更改设备的字体设置:字体样式和字体大小?.但是我找不到以编程方式更改显示大小的方法.可能吗?
我试过了什么?
我已经检查了Settings.System便利函数列表中的可能选项,这些函数用于以编程方式更改设置.
更新:
我已在此处打开了相同的功能请求:https://code.google.com/p/android/issues/detail?id = 214124.如果你觉得它会有用,那就明星吧.
感谢您的帮助!
在Android应用程序中,我有一个按钮,我想要具有打开应用程序通知设置的功能(在Android设置中).
我可以用这个打开Android设置
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
Run Code Online (Sandbox Code Playgroud)
但我想直接在我的应用通知设置上打开
替代
如果有办法以编程方式打开和关闭"阻止通知"也可以.
我是新手PreferenceActivity.我的问题是如何通过更改其他首选项来启用和禁用首选项屏幕中的选项?
我的prefs.xml:
<ListPreference
android:entries="@array/units"
android:entryValues="@array/lunits"
android:key="listUnits"
android:summary="Units schosssing"
android:title="Units" android:defaultValue="C"/>
<ListPreference
android:entries="@array/palette"
android:entryValues="@array/lpalette"
android:key="listpalette"
android:summary="Palette schosssing"
android:title="Palette"
android:defaultValue="1"/>
Run Code Online (Sandbox Code Playgroud)
在listUnits有2个选项,摄氏和华氏,因此,如果用户选择摄氏listpalette应该得到允许,如果用户选择华氏被禁用,我怎么能做到这一点?
我的设置活动:
public class SettingsActivity extends PreferenceActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
}
public static class MyPreferenceFragment extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正面临着Mac版Android Studio的一个奇怪问题(即,我无法复制(⌘+ C)并粘贴(⌘+ V)任何文本).我不知道为什么这样的表现很奇怪.我的问题可能很愚蠢,但自从我开始从Windows到Mac工作以来,我一直面临着这个问题.任何解决方案和替代方案对我都有帮助.过去两天我完全陷入了这个问题.
我希望从intent打开Data Usage屏幕.我搜索了android.provider.Settings类以获得适当的意图.试过:
new Intent(android.provider.Settings.ACTION_NETWORK_OPERATOR_SETTINGS)
new Intent(android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS)
Run Code Online (Sandbox Code Playgroud)
这不会导致数据使用.
我很清楚所有有这个问题的链接,但没有人有回应. 如何在android中打开系统数据使用活动? Android编程打开数据使用设置页面 等...
如果移动运营商不支持当前设备的短信自动设置,我正在尝试制作可以进行互联网和彩信设置的应用.由于仅限于从Android 4.2写入或读取APN,因此应用程序不是系统.我决定编写并发送带有配置设置的短信(或模仿收到此类信息).如何使用APN配置设置组合这些短信,移动运营商在连接到他们的网络时自动发送?这是一个很好的决定,还是有更简单的方法来实现我的目标?