默认的微调器行为是当它"关闭"时,长按它将"打开"它并显示下拉视图.我发现这种行为对用户来说可能是非常有问题的.例如,如果他们试图在屏幕上滚动某些内容,并碰巧"抓住"一个有微调器的地点,那么它会在一秒左右打开下拉视图而不是滚动,并且用户是基本上用手指放在其中一个下拉选项上(他们现在可能会意外按下).
所以,我想禁用那个长按行为,并且只在单击它时让旋转器"打开",而不是长按.那可能吗?
我需要能够打开和关闭GPS接收器,并且需要WRITE_SECURE_SETTINGS才能访问安全设置.我已经搜索了很多,我看到的每个答案都说,系统/固件之外的任何应用程序都无法获得该认可.
然而,这完全是不真实的.市场上有几个应用程序正是我正在尝试的(关于GPS),但还有更多具有WRITE_SECURE_SETTINGS权限的应用程序.例如:
那么,怎么做呢?
我的应用程序正在使用API 14及更高版本中提供的VoicemailContract功能,将语音邮件消息插入手机的通话记录中.但是,有些手机似乎禁用了该功能,即使在高于14的API版本中也是如此.三星Galaxy Note 2就是一个很好的例子.因此,当新的VM消息插入到数据库中时,它将不会显示在呼叫日志中(但这在大多数其他电话上都能正常工作).因此,似乎三星在某种程度上禁用了该手机上的功能,并且我希望能够在运行时检测到这一点,以便我可以在应用程序的设置中隐藏该选项(如果它不可用).
我在我的应用程序中启用了接近唤醒锁,当接近传感器检测到某些东西时,它会关闭屏幕.但是当屏幕唤醒时出现问题 - 它会进入锁屏,而不是我的应用程序.无论屏幕关闭的时间如何,都会发生这种情况(即使传感器在几秒钟后被清除).这是我使用的代码:
int PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
mProximityWakeLock = pm.newWakeLock(PROXIMITY_SCREEN_OFF_WAKE_LOCK, LOG_TAG);
if(!mProximityWakeLock.isHeld()){
mProximityWakeLock.acquire();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法纠正这种行为?
我正在尝试编写一个在运行时将某些内容复制到/ system分区的应用程序.我已经实现了通过请求SU权限以root身份运行终端命令的功能.我可以成功运行很多命令(在用SuperUser授予权限请求之后).但是,当我尝试将/ system重新安装为读/写时,没有任何反应.我没有收到错误或崩溃,并且命令看起来很好,但分区保持为只读.这是我正在运行的命令(Droid X):, mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system如果我从终端运行相同的命令,它的工作正常.这是我的应用程序中执行root命令的代码:
String cmd = "mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system";
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(cmd + "\n");
os.writeBytes("exit\n");
os.flush();
Run Code Online (Sandbox Code Playgroud)
然后我有一些代码检查stdout和stderr流,看看发生了什么.任何人都可以告诉我为什么这不起作用?
我需要检查OS 2.0 - 2.3中当前连接的BT耳机(不仅仅是配对).在引入蓝牙耳机类的API版本11之前,此类功能不存在.但是在先前的API中已经存在一个名为BluetoothHeadset的类,但它不能公开访问.这是它的文档:http://www.kiwidoc.com/java/l/x/android/android/9/p/android.bluetooth/c/BluetoothHeadset.所以,我试图使用反射来调用"isConnected"方法,但我在反射时非常可怕,而且我收到了一个错误java.lang.IllegalArgumentException: object is not an instance of the class.
我得到了一个使用配对设备的列表BluetoothDevice.getBondedDevices(),我尝试isConnected()在每个设备上使用该方法.这是代码:
public boolean isBtDevConnected(BluetoothDevice btDev){
boolean connected = false;
try {
Class<?> BTHeadset = Class.forName("android.bluetooth.BluetoothHeadset");
Method isConnected = BTHeadset.getMethod("isConnected", new Class[] {BluetoothDevice.class});
connected = isConnected.invoke(BTHeadset, new Object[] {btDev});
}
}
} catch (Exception e) {
WriteToLog(e);
}
return connected;
}
Run Code Online (Sandbox Code Playgroud)
我在调用该方法的行上得到了异常,但我不确定我做错了什么.
我有一个由几个活动组成的应用程序,我使用应用程序上下文(从应用程序类中使用,并使其持久化)在所有活动之间共享数据和对象.我使用Application Class而不是后台服务有几个很好的理由,我不会在这里讨论.
我最近还为我的应用添加了自定义联系人同步适配器.它在相同的包下,在同一个APK中.因此,我将其设置为访问应用程序上下文,就像我的应用程序中的其他内容一样,使其可以访问所有共享数据和对象.但是,即使它(大多数情况下)有效,它也会创建一个新的Application Context实例.因此,我的应用程序基本上有两个独立的实例在运行,并且它们之间不共享数据.
我认为问题是我的应用程序永远不会启动同步服务,操作系统会这样做.我的所有其他活动都是由应用程序启动的,或者主活动在启动时访问Application Context,然后App Context控制其他所有活动.有没有办法让同步服务访问现有的应用程序上下文,而不是创建它的新实例?
这是我的应用程序的基本结构:
应用程序
package com.mycomany.myapp;
public class MyApp extends Application{
...
}
Run Code Online (Sandbox Code Playgroud)
活动1
package com.mycomany.myapp;
public class MyActivity1 extends Activity{
MyApp a;
@Override
public void onCreate(Bundle savedInstanceState){
a = (MyApp) getApplicationContext();
...
}
}
Run Code Online (Sandbox Code Playgroud)
SyncAdapterService
package com.mycomany.myapp;
public class SyncAdapterService extends Service {
private static SyncAdapterImpl sSyncAdapter = null;
private static final Object sSyncAdapterLock = new Object();
private static ContentResolver mContentResolver = null;
private static MyApp a;
public SyncAdapterService() {
super();
}
private static …Run Code Online (Sandbox Code Playgroud) 我一直在玩Jelly Bean中的新富notificaitons,并一切正常,当我成立了一个新的notificaiton使用模板如预期Notification.BigPictureStyle,Notification.BigTextStyle或Notification.InboxStyle.我可以使用该Notification.Builder.addAction()方法,操作按钮显示在扩展通知的底部.但是当我尝试使用Notification.bigContentView创建一个cutom通知时,操作按钮永远不会显示.
只是为了澄清,如果我从未设置bigContentView,按钮确实会显示出来.但是只要该字段设置为自定义RemoteViews对象,按钮就会消失.
有没有人对为什么会这样做有任何想法?
我有一个可以添加和删除联系人的应用程序。如果现有联系人中存在现有值,则可以对其进行很好的修改。但我似乎无法在现有联系人中插入新值。例如,如果家庭电话号码有一个现有值,但工作电话号码没有,我尝试使用填充来添加值(cintactidValue并workNumber传入):
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Data.CONTACT_ID, idValue)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, workNumber)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
Run Code Online (Sandbox Code Playgroud)
但我得到一个 NullPointerException:
java.lang.NullPointerException
at com.android.providers.contacts.ContactsProvider2.insertData(ContactsProvider2.java:2604)
at com.android.providers.contacts.ContactsProvider2.insertInTransaction(ContactsProvider2.java:2452)
at com.android.providers.contacts.SQLiteContentProvider.insert(SQLiteContentProvider.java:106)
at com.android.providers.contacts.ContactsProvider2.insert(ContactsProvider2.java:2256)
at android.content.ContentProviderOperation.apply(ContentProviderOperation.java:214)
at com.android.providers.contacts.SQLiteContentProvider.applyBatch(SQLiteContentProvider.java:216)
at com.android.providers.contacts.ContactsProvider2.applyBatch(ContactsProvider2.java:2290)
at android.content.ContentProvider$Transport.applyBatch(ContentProvider.java:217)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:194)
at android.os.Binder.execTransact(Binder.java:336)
at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么吗?
我想跟踪我的应用程序的数据使用,但要做到这一点,我需要能够得到的全尺寸HttpUriRequest和HttpResponse.简单地获取大小HttpEntity是不够的,因为请求和响应都传输了更多数据(标题,参数,传输的实际URL等).那么,有没有办法找到双向传输的全部数据?
谢谢.
android ×10
bluetooth ×1
contacts ×1
edit ×1
gps ×1
headset ×1
http ×1
httprequest ×1
httpresponse ×1
insert ×1
java ×1
long-press ×1
mount ×1
permissions ×1
proximity ×1
reflection ×1
root ×1
sensor ×1
service ×1
spinner ×1
sync ×1
system ×1
voicemail ×1
wakelock ×1