Articles of java的

主场发射器强制停止后未收到Android AppWidget的按钮点击事件

我有一个应用程序小部件,可以在我的提供程序中的onUpdate()中接收click事件。 但是,当我尝试强制关闭主启动器时,单击事件将丢失。 我甚至在所有onEnabled() , onReceived() ……等中放置了断点:连接似乎丢失了。 因此,我如何“重新连接”按钮事件? WidgetProvider扩展AppWidgetProvider : @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { Log.d(TAG, “onUpdate()”); Log.d(TAG, “isLoading: ” + CONSTANT.isLoading); // update each of the widgets with the remote adapter from updateService // Get all ids ComponentName thisWidget = new ComponentName(context, ScoreWidgetProvider.class); int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); // Build the […]

Javareflection处理库的更改

好的,我有一个Android应用程序,我开始为应用程序创建一个插件系统,以便开发人员可以编写应用程序可以用来生成不同内容的内容提供程序,我不会完成整个过程,但一切正常,如下所示: 1)我创建了一个名为com.myaddonlib的库,我在我的项目中导入了这个库中有一个接口和不同的对象。 2)现在开发人员可以在他的最后创建一个简单的Java项目,导入库com.myaddonlib ,并在他的主类上实现接口,该接口具有从库中返回不同对象的方法。 3)回到Android应用程序,我可以加载开发人员创建的.jar文件(在将classes.dex添加到jar文件之后)和android DexClassLoader我可以加载实现的界面,如下所示: DexClassLoader classloader = new DexClassLoader(jarFilePath, tempDirectory, null, context.getClass().getClassLoader()); Class classToLoad = classloader.loadClass(“com.apackage.Addon”); 其中Addon是由addon开发人员创建的类,它从驻留在名为com.apackage的包中的库实现接口。 然后,我可以将com.myaddonlib库中的接口com.myaddonlib为com.myaddonlib的新实例,并调用addon开发人员实现的函数。 现在问题就是我决定更新插件库并从类中删除其中一个variables,这意味着插件的类现在与更新库中的类(在应用程序中使用)不同。 即使未使用更改的variables,也会导致应用程序崩溃而不会出现任何错误。 事实上两个类都不同(即使唯一的区别只是一个缺失的variables)会导致某些故障。 现在这不是一个简单的解释程序所以我会理解,鉴于我的英语不好,有些人会遇到麻烦。 我的问题是我需要知道如何避免由于两端之一上的库更改而导致的崩溃。 以及java如何在这种情况下处理对象更改

SSLHandshakeException未findAndroid HTTPS的证书路径的信任锚

我正在尝试建立与HTTPS站点的连接,并且我遇到了以下exception: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found 。 我原来的代码如下: URL url = new URL(“https://example.com”); HttpsURLConnection urlConnection = (HttpsURLConnection)url.openConnection(); in = urlConnection.getInputStream(); byte[] responsedata = CommonUtil.readInputStream(in); Log.w(TAG, “response is “+CommonUtil.convertBytesToHexString(responsedata)); 然后,我在这里阅读Google的文章,并将我的代码修改为: CertificateFactory cf; try { cf = CertificateFactory.getInstance(“X.509”); InputStream in = this.mContext.getResources().openRawResource(R.raw.cert); Certificate ca; ca = cf.generateCertificate(in); System.out.println(“ca=” + ((X509Certificate) ca).getSubjectDN()); in.close(); URL […]

从InstrumentationTestCase创建通知

我想从unit testing中测试通知是否能够从资产中播放自定义声音。 测试并不是为了validation任何东西,我把它写成一种快速的方式来演示一个function而不会混淆主应用程序代码。 所以在测试项目中,我在/res/raw添加了一个wav文件。 我将在通知构建器中使用此URL: Uri path = Uri.parse(“android.resource:///testsound.wav”); 该URL应该根据我在SO中阅读的问题工作。 我们假设它有效。 现在因为我不想在主项目的/res/raw文件夹中包含测试wav文件,但是在测试项目中,我不得不从InstrumentationTestCase扩展我的unit testing,以便我可以访问测试项目。 这是代码: NotificationCompat.Builder builder = new NotificationCompat.Builder(getInstrumentation().getContext()); … builder.setSound(path, AudioManager.STREAM_NOTIFICATION); … NotificationManager notificationManager = (NotificationManager) getInstrumentation().getContext().getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID, builder.build()); notify调用抛出以下exception: java.lang.SecurityException: Calling uid 10198 gave package which is owned by uid 10199 at android.os.Parcel.readException(Parcel.java:1540) at android.os.Parcel.readException(Parcel.java:1493) at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:611) at android.app.NotificationManager.notify(NotificationManager.java:187) at android.app.NotificationManager.notify(NotificationManager.java:140) … at […]

如何同步Play服务实时多人游戏

我正在使用Libgdx开发流行游戏Pong的在线版本。 我已经开始使用谷歌的实时多人游戏服务在玩家之间发送游戏数据,但我无法弄清楚如何解决我面临的同步问题。 此刻发送的信息是玩家的划桨,所以当我移动时,我将新位置发送给对手。 在对手收到它时,时间已经过去并且同步丢失。 我知道使用最慢连接的动作之间可能会有一些等待时间,但是如何让它看起来更平滑呢?

openOptionsMenu()在appcompat-v7 22.1.0或更新版本中不起作用

我已经看到几个关于openOptionsMenu()无法在各种Android版本上运行的问题的报告,例如: 跨Android版本的openOptionsMenu() openOptionsMenu()不起作用 但我遇到的问题似乎与正在使用的appcompat-v7支持库的版本有关。 实质上,对于较新版本的appcompat-v7,如果您的活动扩展了Activity,则在调用openOptionsMenu()时菜单将显示正常,但如果您扩展ActionBarActivity或AppCompatActivity (即使用兼容性库)则不会起作用。 在旧版本的appcompat-v7中,它可以正常工作。 它是可重复的,如下: 在Android Studio中,导入示例’ActionBarCompat-Basic’ 在屏幕上添加一个按钮,调用openOptionsMenu() 请注意,这样可以正常工作,因为样本中使用了旧版本的库appcompat-v7:21.0.3 更改依赖关系以使用appcompat-v7:23.0.1,重建,当单击按钮时,菜单将不会出现。 更改主要活动以扩展活动(即没有应用程序兼容性) – 它可以工作 更改主要活动以扩展AppCompatActivity(即使用应用程序兼容性libarry) – 它失败 经过一些测试,我发现这在appcompat-v7:22.1.0中停止工作,并且将不再适用于此jar的任何较新版本。 这种行为在模拟器和物理设备上是相同的,在Android版本5.1.1(23)和2.1(7)上是我测试过的两个版本。 我添加了对此错误的评论: Android问题跟踪器错误 任何建议,想法或变通方法表示赞赏! 史蒂夫

为什么我们需要Lollipop的第4个构造函数?

我开始了一个针对Android Lollipop(21)的项目,并创建了一个自定义视图。 当我为视图生成构造函数时,我得到了一个新的第4个构造函数,它比其他构造函数占用更多的参数。 public class FooView extends FrameLayout { public FooView(Context context) { super(context); } public FooView(Context context, AttributeSet attrs) { super(context, attrs); } public FooView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } // This 4th constructor @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FooView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); […]

JNI:从C代码到Java和JNI

背景 我正在开发eclipse中的android应用程序,现在我遇到了问题,我需要你的帮助。 所以我必须从JAVA应用程序调用C编写的函数。 但是在我编写代码的过程中,我有一些问题 ,你可以在下面看到。 我在等你的答案和想法…… C代码: typdef struct blobData_s { unsigned long length; unsigned char data[1]; } blobData_t; unsigned int CheckEnrollmentExist ( unsigned long hdevice, blobData_t* pInputInfo ) { // Function code goes here …………………….. return some_value; } JAVA代码: 在JAVA代码而不是unsigned long我使用int所以我可以写。 class jblobData_c { public int langth; *Question 1.* } public class ApplicationMainClass extends […]

Java SE和Android平台中的不同正则expression式结果

我有以下Java SE代码,它在PC上运行 public static void main(String[] args) { // stringCommaPattern will change // “,”abc,def”,” // to // “,”abcdef”,” Pattern stringCommaPattern = Pattern.compile(“(\”,\”)|,(?=[^\”[,]]*\”,\”)”); String data = “\”SAN\”,\”Banco Santander, \”,\”NYSE\””; System.out.println(data); final String result = stringCommaPattern.matcher(data).replaceAll(“$1”); System.out.println(result); } 我得到了预期的结果 “SAN”,”Banco Santander, “,”NYSE” “SAN”,”Banco Santander “,”NYSE” 但是,来到Android时 。 Pattern stringCommaPattern = Pattern.compile(“(\”,\”)|,(?=[^\”[,]]*\”,\”)”); String data = “\”SAN\”,\”Banco Santander, \”,\”NYSE\””; […]

打开Hardwareacceleration的NullPointerException?

我通过简单的按钮点击我的应用程序收到一些错误消息。 点击animation应该开始,但按钮变大。 它在大多数设备上运行完美,但在某些设备上(我认为大多数是4.X及以上)它会崩溃。 exception消息(堆栈跟踪): java.lang.NullPointerException at android.view.GLES20RecordingCanvas.drawBitmap(GLES20RecordingCanvas.java:118) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:400) at android.view.View.draw(View.java:10999) at android.view.ViewGroup.drawChild(ViewGroup.java:3186) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.ViewGroup.drawChild(ViewGroup.java:3184) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.ViewGroup.drawChild(ViewGroup.java:3184) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.ViewGroup.drawChild(ViewGroup.java:3184) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2788) at android.view.View.draw(View.java:11017) at android.view.View.getDisplayList(View.java:10444) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2896) at android.view.View.getDisplayList(View.java:10407) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2896) at android.view.View.getDisplayList(View.java:10407) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2896) at android.view.View.getDisplayList(View.java:10407) at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:883) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2089) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1781) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2666) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:156) […]