小编Pet*_*ter的帖子

Android - 等待创建处理程序对象的正确方法

伙计们,

这是我的后台线程的简化代码:

    public class MyThread extends Thread {
      private Handler _handler;

      public void run() {
         Looper.prepare();
         this._handler = new Handler();
         Looper.loop();
      }

      public void DoSomething() {
         if (!this.isAlive()) {
            this.start();
         }

         this._handler.post(blah);
      }
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是后台线程在调用post()时可能还没有创建处理程序对象.本质上,我需要一个等待循环来处理初始化处理程序对象.在Android下生成这个的可接受方法是什么?

预先感谢您的帮助.

问候,彼得

android

7
推荐指数
1
解决办法
2348
查看次数

Java一起使用"-cp"和"-jar"

伙计们,

早些时候,我只有一个jar文件,并设置了清单,以便我可以简单地运行我的程序:

 java -jar MyApp.jar
Run Code Online (Sandbox Code Playgroud)

现在,我已将我的功能分成两个jar文件 - MyCore.jar和MyApp.jar.

以下命令有效:

java -cp "*" com.mycompany.mypackage.App
Run Code Online (Sandbox Code Playgroud)

但我不能让以下工作

java -cp "*" -jar MyApp.jar
Run Code Online (Sandbox Code Playgroud)

我得到一个ClassNotFoundException.

我更喜欢使用"-jar"开关.有没有办法让它发挥作用?

预先感谢您的帮助.

问候,
彼得

java

7
推荐指数
3
解决办法
2398
查看次数

将非Android库项目添加到Eclipse中的Android应用程序

我的Eclipse工作区中有三个项目:

  1. 基于maven的库项目,生成.jar文件.该项目包含我们的核心代码.
  2. 基于maven的Java桌面应用程序.此应用程序取决于库项目.
  3. 我们刚刚开始构建的Android应用程序.它尚未成熟.

我希望Android应用程序使用库项目作为依赖项.

我已经阅读了一些关于向Android应用程序添加库文件依赖关系的类似问题的回复,我试图遵循它们:

方法#1:

项目 - >属性 - > Java构建路径 - >项目 - >添加和添加库项目.

现在,我可以使用库项目中的类.编译器不会产生任何警告.但是,当我在模拟器上运行应用程序时,我得到一个类未定义的错误.

方法#2:

将生成的.jar文件复制到Android应用程序的"libs"目录中.

这有效.没有类未定义的异常.但是,我无法附加源代码,因此无法单步执行库代码.另外,每次源更改时,我都必须手动复制.jar文件.

方法#3:

转到库项目的"属性".您将在左侧窗格中看到"Android".选择它并标记"IsLibrary"字段.

但是,在我的情况下,左窗格中没有"Android"属性.我猜这个属性只有在它是一个真正的Android库项目时才会显示.

我被卡住了.如果有人能告诉我如何最好地处理这种情况,我将不胜感激.

以下是我希望实现的目标摘要:

  1. 用于桌面应用程序以及Android应用程序的相同库项目.
  2. 在Android应用程序上,源代码调试应该有效.
  3. 如果库应用程序中有任何源代码更改,Android应用程序应自动获取新的更改(而不是每次尝试将新的.jar文件拖到libs文件夹中).

java eclipse android

7
推荐指数
1
解决办法
1419
查看次数

Android JNI方法 - 是第二个参数jclass还是jobject?

伙计们,

在我的Android Java代码中,我有一个声明如下:

public class SurfacePanelNative extends SurfaceView implements SurfaceHolder.Callback {
   ...
   private static native void native_render();
}
Run Code Online (Sandbox Code Playgroud)

在我的本机代码中,我将函数声明为:

void native_render(JNIEnv *env, jobject javaSurface) {
   ANativeWindow* window = ANativeWindow_fromSurface(env, javaSurface);
   ...
}
Run Code Online (Sandbox Code Playgroud)

看一下网上的一些例子,似乎该函数应声明为:

void native_render(JNIEnv *env, jclass clazz) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道哪个宣言是正确的.

我在想第一个是正确的.否则,我没有足够的信息来获取javaSurface.

如果有人能够对此有所了解,我将不胜感激.

预先感谢您的帮助.

问候,
彼得

android-ndk

7
推荐指数
1
解决办法
2902
查看次数

Eclipse ADT - 未解析的包含jni.h

在我的Windows平台上,我安装了最新版本的adt bundle(20140321)和ndk(r9d).安装尽可能干净.环境变量NDK_ROOT,PATH等都已正确定义.

我正在处理的应用程序有一些C++本机代码.代码在Eclipse之外以及Eclipse内构建都很好.

然而,问题在于编辑抱怨jni.h是一个未解决的问题.

项目 - >属性 - > C/C++常规 - > PathsAndSymbols显示包含目录,其中一个目录是C:\ adt \ndk\platforms\android-19\arch-arm\usr\include.我已经验证了jni.h存在于此目录中.

我已经检查了这个论坛上的所有其他消息,但找不到任何具体步骤.感谢您的指导.问候.

eclipse android android-ndk

7
推荐指数
2
解决办法
1万
查看次数

无法在某些设备上播放默认通知铃声

这是我播放铃声通知的代码片段:

Uri u = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(MainActivity.this, u);
r.play();
Run Code Online (Sandbox Code Playgroud)

这似乎在大多数设备上都能正常工作。但是,在三星 S8 和三星 S9 等某些设备上,它不起作用。Logcat 显示:

I/Ringtone: Internal uri : content://settings/system/notification_sound
D/RingtoneManager: getActualDefaultRingtoneUri  type    :2
W/MediaPlayer: Couldn't open content://0@settings/system/notification_sound_cache: 
java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

请注意,相同的代码在三星 S7 上运行良好。

想知道是否有人有任何见解。

android android-contentresolver android-notifications

7
推荐指数
0
解决办法
1224
查看次数

在安装Android应用程序时是否可以强制使用EULA?

在将Android应用程序上传到Google Playstore时,我没有看到任何指定EULA文本的选项.我想知道是否有可能强制执行EULA,以便用户在安装发生之前必须同意它.

如果无法做到这一点,我需要以编程方式强制用户同意首次使用.

android google-play

6
推荐指数
1
解决办法
1162
查看次数

为Android构建openssl的问题

我按照这里的链接为openssl构建Android库:

http://wiki.openssl.org/index.php/Android

以下是我在Setenv-Android.sh中的设置:

_ANDROID_EABI="arm-linux-androideabi-4.6"
_ANDROID_ARCH=arch-arm
_ANDROID_API="android-16"
Run Code Online (Sandbox Code Playgroud)

下一步是运行以下命令:

$ . ./Setenv-Andrhoid.sh
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Error: FIPS_SIG does not specify incore module. Please edit this script.
Run Code Online (Sandbox Code Playgroud)

没有提到如何在wiki中配置FIPS_SIG.看起来该脚本正在寻找名为"incore"的文件或目录.我搜索了我的$ ANDROID_NDK_ROOT.但是,我没有任何"incore"文件.

我需要运行的下一个命令如下:

$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine \
      --openssldir=/usr/local/ssl/$ANDROID_API
Run Code Online (Sandbox Code Playgroud)

在这里,openssldir指向绝对/usr/...目录?我希望最终的头文件和lib文件最终在$ANDROID_NDK_ROOT/platform/android-16/arch-arm目录中.

android openssl android-ndk

6
推荐指数
1
解决办法
2531
查看次数

如何在特定端口运行 asp.net core 2.1 发布应用程序?

环境:Ubuntu 18.04下的ASP.NET Core 2.1

默认情况下,新创建的 asp.net 核心应用程序运行在http://localhost:5000并自动重定向到https://localhost:5001

由于我打算在 nginx 下运行我的应用程序(并使用 nginx 的 SSL 功能),我想在没有 https 的情况下在特定端口(例如 6000)上运行我发布的应用程序。

Post ASP.NET Core 2.1 + Kestrel (How to disable HTTPS)解释说必须简单地使用“--urls”参数来实现这一点。

这是我尝试过的:

$ dotnet publish --configuration Release
$ dotnet bin/Release/netcoreapp2.1/MyApp.dll
Run Code Online (Sandbox Code Playgroud)

该应用程序现在开始侦听http://localhost:5000https://localhost:5001。当我浏览到http://localhost:5000 时,它会自动重定向到https://localhost:5001。到现在为止还挺好。

现在,我尝试在端口 6000 上运行:

$ dotnet bin/Release/netcoreapp2.1/MyApp.dll
     --urls="http://localhost:6000"
Run Code Online (Sandbox Code Playgroud)

从终端窗口中的消息来看,该应用程序似乎开始在http://localhost:6000 上侦听。但是,浏览到此 url 会导致“无法访问此站点”错误。

我什至试过:

$ dotnet bin/Release/netcoreapp2.1/MyApp.dll
     --urls="http://localhost:6000,https://localhost:6001"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我收到一条错误消息:“只能使用 IApplicationBuilder.UsePathBase() 配置路径库”。

有人可以告诉我如何在指定端口简单地运行应用程序吗?我希望我不需要硬编码端口号。

asp.net-core

6
推荐指数
1
解决办法
3380
查看次数

克隆 Azure git 存储库报告“无法解析主机”

这是 Azure TFS 报告的我的 git url:

https://mycompany@dev.azure.com/mycompany/myproject/_git/myproject
Run Code Online (Sandbox Code Playgroud)

这是我的克隆命令

git clone https://myusername:mypass@mycompany@dev.azure.com/mycompany/myproject/_git/myproject
Run Code Online (Sandbox Code Playgroud)

但是,我无法访问存储库。错误是:

Could not resolve host: mycompany@dev.azure.com
Run Code Online (Sandbox Code Playgroud)

有人可以建议如何克服这个问题吗?问候。

git tfs azure-devops

6
推荐指数
2
解决办法
7755
查看次数