我正在编写一个小部件,只要用户更改振铃器音量或振动设置,就需要更新.
捕获android.media.VIBRATE_SETTING_CHANGED对于振动设置工作得很好,但我没有找到任何方式在铃声音量变化时得到通知,虽然我可以尝试捕捉当用户按下音量增大/音量减小物理键时,还有很多其他选项在不使用这些键的情况下更改音量.
你知道是否有任何广播行动为此定义或以任何方式创建一个或没有它解决问题?
我正在将旧的Dialogs切换到DialogFragment,但主题和样式似乎不起作用.
我正在使用兼容性库v4中的DialogFragment,而在onCreate方法中我尝试调用setStyle(style,theme); 有很多不同的主题,但对话框总是显示为运行Android 4.0.3的模拟器中的"旧"对话框(即,它没有在Holo主题中显示).
还有什么我应该做的吗?使用兼容性库是否会禁用Holo主题或其他内容?如果是这种情况,我应该创建两个DialogFragments,一个用于旧版本,一个用于较新版本?
谢谢!
这是我的对话框的(简化)代码.我已经尝试了Theme_Holo_Dialog_NoActionBar和Theme_DeviceDefault_Dialog_NoActionBar,但Android 4模拟器始终将对话框显示为"旧"对话框,而不是使用Holo主题.我究竟做错了什么?:(
[...]
import android.support.v4.app.DialogFragment;
[...]
public class AlertDialogFragment extends DialogFragment {
public static AlertDialogFragment newInstance(int id) {
AlertDialogFragment f = new AlertDialogFragment();
Bundle args = new Bundle();
args.putInt("id", id);
f.setArguments(args);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int style = DialogFragment.STYLE_NORMAL, theme = 0;
theme = android.R.style.Theme_Holo_Dialog_NoActionBar;
setStyle(style, theme);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mId = getArguments().getInt("id");
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(mTitle)
.setMessage(mMessage)
.setPositiveButton(getString(R.string.btn_ok), new DialogInterface.OnClickListener() {
@Override
public …Run Code Online (Sandbox Code Playgroud) 我在Play商店有一个付费应用程序(个人资料小工具,万一有人想知道;))我想允许一些用户(朋友或没有信用卡的人)免费下载.
当然我可以向他们发送APK,但是他们不会自动获得更新,并且每次更新应用程序时我都必须再次向他们发送所有APK文件.而且,通过使用此方法,任何有权访问APK文件的人都可以免费安装该应用程序.
我看到通过使用Android许可库,您可以让一些用户绕过许可证检查,但我希望应用程序在Play商店中显示为"已购买",我认为这不会.
我搜索堆栈溢出,但没有我找到了解决方案(如创建一个单独的APK,并检查从"真正的"应用程序它的存在)的处理的自动更新的一部分.
有人找到了一个很好的解决方案吗?
提前致谢!
我正在尝试使用Apache POI在XLSX电子表格中创建条形图,但Excel一直说当我尝试打开文件时内容出现问题并删除图表.这是我正在尝试做的完整代码:
public static void createBarChart() {
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("Sheet2");
Row row;
Cell cell;
row = sheet.createRow(0);
row.createCell(0);
row.createCell(1).setCellValue("HEADER 1");
row.createCell(2).setCellValue("HEADER 2");
row.createCell(3).setCellValue("HEADER 3");
for (int r = 1; r < 5; r++) {
row = sheet.createRow(r);
cell = row.createCell(0);
cell.setCellValue("Serie " + r);
cell = row.createCell(1);
cell.setCellValue(123);
cell = row.createCell(2);
cell.setCellValue(456);
cell = row.createCell(3);
cell.setCellValue(789);
}
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 5, 20);
Chart chart …Run Code Online (Sandbox Code Playgroud) 我有一个映射器,对于目标类的特定属性,需要从源对象内的对象列表中选择一个,并使用不同的映射器类来映射它。
简化很多,该类Game包含一个对象列表Transaction,我的GameMapper类如下所示:
@Component
@Mapper(injectionStrategy = InjectionStrategy.CONSTRUCTOR, uses = {TransactionMapper.class, EventMapper.class})
public interface GameMapper {
@Mapping(target = "transaction",
expression = "java(transactionMapper.transactionToDto(findTransactionForPlayer(game, idPlayer)))")
GameResultDto gameToGameResultDto(Game game, Long idPlayer);
// Some more methods
}
Run Code Online (Sandbox Code Playgroud)
问题是,EventMapper被生成为private final EventMapper eventMapper;内部的属性GameMapperImpl,但TransactionMapper不是,因此构建失败,因为 MapStruct 找不到transactionMapper。
我最好的猜测是,这是由于没有显式GameMapper使用其他方法TransactionMapper,因此 Mapstruct 决定不需要它并且不会将其注入到实现中。
那么...有没有办法强制 MapStruct 在子句中包含映射器uses,即使看起来它们没有被使用,或者有任何其他方法来解决这个问题?
Android 4.2引入了一个新类Settings.Global,它现在拥有一些以前在Settings.Secure或Settings.System中的设置.
写入系统设置和安全设置是可能的,因为或WRITE_SETTINGS和WRITE_SECURE_SETTINGS权限(请参阅Manifest.permissions).
事情是......有没有办法修改全局设置?例如,飞机模式之前可以从应用程序切换,现在,因为它在Settings.Global,它似乎不可能:(
谢谢!
我正在制作一个振动切换小部件(事实上,它的第一个版本已经在市场上)但我在Android 2.2的振动设置方面遇到了一些问题.
高达Android 2.1我没有问题,当我想禁用振动我做
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
Run Code Online (Sandbox Code Playgroud)
和相同,但VIBRATE_SETTING_ON在两条线上打开它,它的工作正常.
但是,由于Android 2.2引入了"仅在静音模式下振动"和"在不在静音模式下振动",我不知道如何使其工作.当vibrate设置为"Always"或"Never"时没有问题,但是一旦用户手动将其设置为其他两个设置之一,应用程序就会开始做一些奇怪的事情.
例如,如果我将它设置为"仅在静音模式下振动"并且通过我的小部件关闭振动,它会关闭,但是当我重新打开它时它会返回"仅在静音模式下"而不是"永远".事实上,没有办法将它设置回"Always",除非你通过Settings - > Sound进行,所以我猜振动模式的组合框正在做一些我不知道的事情.就像它将值存储在其他地方一样,因为即使我手动设置为"Always",当我禁用它并通过小部件再次启用它(使用我之前发布的代码)时,它会一直回到"仅在静音模式下振动" ".
而且,AudioManager类中的"仅在静默模式下"(VIBRATE_SETTING_ONLY_SILENT)中有一个值,但当您将其设置为"仅当不处于静默模式"时,它使用VIBRATE_SETTING_ON,因此无法检测到它(不是我知道,我的意思是).
希望我没有太混乱,但我想提供所有可能的数据.所有这一切......
有谁知道如何正确处理2.2中的振动设置?为了完全禁用或启用振动,是否还有我必须设置或运行的其他变量?还是一种将手机"重置"到已知状态以便工作正常的方法?
重现问题的步骤(或者至少是其中一个问题)是:
通过设置菜单将振动设置为"仅在静音模式下".
通过小部件将振动设置为"从不":
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
检查振动设置为"从不"的设置菜单.
通过小部件将振动设置为"始终":
setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);