我一直在研究Android电话功能的源代码,我有点迷失了.我基本上都认为,除非你是Google或OEM,否则无法处理CDMA/GSM设备.现在我只是想弄清楚OEM在哪里放置他们的代码来处理电话,即他们从/实现什么类/接口.
虽然经历了手机应用程序的InCallScreen活动,我追溯到点击处理程序结束通话按钮,PhoneUtils.hangup(CallManager)这最终使得一个呼叫com.android.internal.telephony.Call.hangup().既然com.android.internal.telephony.Call是一个抽象类并且com.android.internal.telephony.Call.hangup()是一个抽象方法,我想知道这是否是OEM为提供电话服务而覆盖的类之一.在黑暗中更多的一个镜头是询问是否有人知道这个类的任何开源实现,所以我可以更深入地了解幕后发生的事情.
我有一个场景,我显示一个DialogFragment(使用getSupportFragmentManager()),显示一个值列表和一个"添加"按钮.如果用户点击添加按钮,我显示另一个DialogFragment(使用getChildFragmentManager()一个包含的EditText和Button.当用户点击新的Button,如果这个值通过验证,我把它添加到列表中,如果没有通过验证,我将展示另一种DialogFragment是显示错误消息,并且"确定"按钮.我想它,当"OK"按钮被按下时,用户仍然可以看到DialogFragment与EditText和Button使他们能够过目坏值,并可能改变它.但是,当在错误消息中按下"确定"按钮时DialogFragment,对话框被解除,并且仅显示原始DialogFragment(具有值列表的那个).
DialogFragment在第三个被解雇后,我如何保持第二个仍然显示?
编辑:这是一些代码片段:
//clicking this button shows the first ("outer") fragment
findViewById(R.id.voicemail_notifications_email_addresses).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AddressListDialog.newInstance(
line, AddressListDialog.VOICEMAIL_NOTIFICATIONS_EMAIL)
.show(((FragmentActivity)getContext()).getSupportFragmentManager(), "dialog");
}
});
public static class AddressListDialog extends DialogFragment {
public AddressListDialog() {}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final View v = LayoutInflater.from(getActivity()).inflate(R.layout.vm_address_list_dialog, null);
ListView lv = …Run Code Online (Sandbox Code Playgroud) android android-fragments android-dialogfragment android-support-library
我正在尝试为我的Android项目添加注释处理器,但是我收到一条错误消息,说AbstractProcessor无法找到.我在此期间创建了一个单独的java项目,但我宁愿将所有内容保存在一个Android项目中.包含AbstractProcessor在我的项目中的最佳方式是什么?我正在使用AndroidStudio和Gradle.
更新:
我重新打包javax.annotation,javax.lang.model并且javax.tools坐在我项目的命名空间下(根据这些说明).我包含一个资源/ META-INF/services/javax.annotation.processing.Processor,它包含我的AbstractProcessor子类的完整类名,所有内容编译都很好.但是,处理器永远不会运行.
编辑: 简而言之,我有一个Android库项目,为方法提供注释.我想提供一个处理器,如果注释使用不正确,会导致编译时错误.如果我尝试将处理器放在Android库项目中,Gradle将不会构建它,因为找不到javax.*类.我能让它工作的唯一方法是在库项目中创建一个java模块,并将处理器放在那里.但是,这意味着我必须在我想要使用此批注的任何项目中有2个依赖项; 一个得到注释,一个得到处理器.
我正在使用Google Appengine和Python 2.5,我有一个导致瓶颈的功能.我传递了一个从数据存储中检索到的200个模型实例的列表,然后以json格式返回它,然后传递给客户端.
我最初使用+ =将所有值连接在一起,但服务器用JSON响应大约需要30秒.我运行了一些检查和代码,然后在一秒钟内运行此函数.这是服务器响应JSON之前的最后一条语句,以及在1秒内(在我的本地网络上)达到客户端平均值所需的时间.此功能平均需要30秒才能执行.
我读了这篇文章并尝试使用该cStringIO方法(我也使用了列表连接方法,但它花了相同的时间并cStringIO使用更少的内存,所以我坚持使用它).但是,这与+ =连接(有时更长)的时间大致相同.任何人都可以看到我的代码有任何问题,可能会使它变慢?
编辑:老板说它必须这样做.没有json图书馆(与他一起接受).
编辑2: LastName模型:
class LastName(db.Model):
entry = db.ReferenceProperty(AlumniEntry, collection_name='last_names')
last_name = db.StringProperty(indexed=False)
last_name_search = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)
AlumniEntry是Model被查询的.我将从ds返回的列表传递给get_json_from_alumnus()(alumnus参数).
def get_json_from_alumnus(alumnus, search, total=0):
if len(alumnus) > 0:
from cStringIO import StringIO
concat_file = StringIO()
concat_file.write('{ "alumnus": [')
i = 0
for alumni in alumnus:
if alumni.author:
author = alumni.author.nickname()
else:
author = 'Anonymous'
concat_file.write('{ ')
concat_file.write('"author": "')
concat_file.write(author)
concat_file.write('", ')
concat_file.write('"title": "')
concat_file.write(alumni.title)
concat_file.write('", …Run Code Online (Sandbox Code Playgroud) python google-app-engine concatenation string-concatenation python-2.5
我有一个Android库,它有一个Service创建一个Notification.从我的理解Notification必须有一个contentIntent(PendingIntent)设置或运行时异常将被抛出.
问题是我希望用户能够按Service原样使用它,或者扩展它,以便他们可以PendingIntent在创建过程中通过回调设置自己Notification.但是,如果他们选择不这样做,我需要设置PendingIntent一些东西,以便没有例外.有没有办法创建一个PendingIntent只作为填充的假人?
以下是该createNotification方法的代码示例:
PendingIntent p;
if(getPendingIntentCallback != null) {
p = getPendingIntentCallback.getPendingIntent();
}
else {
p = ?;
}
notification.contentIntent = p;
Run Code Online (Sandbox Code Playgroud) android android-intent android-service android-notifications android-pendingintent
我从我的一个应用程序中获得崩溃报告,来自运行4.3的Nexus 4的用户.据我所知,这个错误是由OpenGL引起的.我不在我的应用程序中使用OpenGL.任何人都可以帮我一把吗?
这是错误:
java.lang.IllegalStateException: Could not create an EGL context. eglCreateContext failed with error: EGL_SUCCESS
at
android.view.HardwareRenderer$GlRenderer.createContext(HardwareRenderer.java:1192)
at
android.view.HardwareRenderer$GlRenderer.initializeEgl(HardwareRenderer.java:1044)
at
android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:979)
at
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1536)
at
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
at
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
at
android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at
android.view.Choreographer.doCallbacks(Choreographer.java:562)
at
android.view.Choreographer.doFrame(Choreographer.java:532)
at
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at
android.os.Handler.handleCallback(Handler.java:730)
at
android.os.Handler.dispatchMessage(Handler.java:92)
at
android.os.Looper.loop(Looper.java:137)
at
android.app.ActivityThread.main(ActivityThread.java:5289)
at
java.lang.reflect.Method.invokeNative(Native Method)
at
java.lang.reflect.Method.invoke(Method.java:525)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at
dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud) Kotlin中是否有一种习惯将变量设置为null(如果尚未为null)?比从语义上更令人愉悦的东西:
var test: String? = null
if(test != null) test = null
Run Code Online (Sandbox Code Playgroud) 有没有办法在Android上通过3G/4G连接使用UPnP进行NAT遍历,如果是这样,它是否依赖于运营商?
我有一个单身人士,我希望在一生中保持活力Application.
public final class KeepAlive extends Whatever {
private KeepAlive() {}
private static class Singleton {
private static final KeepAlive instance = new KeepAlive();
}
}
Run Code Online (Sandbox Code Playgroud)
被Singleton.instance认为是一个强有力的参考,所以它不会得到GC?
更新: Android是否使用自定义类加载器?是这样的,它会永远卸一类像KeepAlive或Singleton?
android ×7
java ×2
3g ×1
annotations ×1
classloader ×1
kotlin ×1
nat ×1
networking ×1
null ×1
opengl-es ×1
python ×1
python-2.5 ×1
reference ×1
singleton ×1
telephony ×1
upnp ×1