Articles of 安卓

使用系统签名的应用程序关闭Android设备

我正在开发Android应用程序,我们需要在某些情况下关闭设备。 我已经在许多地方读到你需要一个带根电话才能这样做。 然后,您可以使用Java的API发出“rebo​​ot”命令: try { Process proc = Runtime.getRuntime() .exec(new String[]{ “su”, “-c”, “reboot -p” }); proc.waitFor(); } catch (Exception ex) { ex.printStackTrace(); } 我实际上已经在Cyanogenmod 10设备(三星Galaxy S3)中尝试过它,它可以工作。 但是,我们不希望使用root设备来关闭它,因为最终用户将能够执行我们公司不允许的非预期事情。 另一方面,我们的申请是由制造商的证书签署的,在这种情况下是Cyanogen的。 我已经读过,通过使用制造商的证书签署您的应用程序,您应该能够发出特权命令(就像root一样)。 但是,即使我将我的应用程序安装为使用制造商证书签名的系统应用程序,上述代码也不起作用: 如果我离开命令的“su”部分,则会显示“超级用户请求”屏幕,但这是我们试图避免的。 如果我删除“su”部分(只是离开“rebo​​ot -p”),则会默默忽略该命令。 因此,我们无法使用我们的系统应用程序关闭我们的设备,该系统应用程序已与Intelliacturer的证书签署。 所以我的问题是,我该怎么做? EDITED 顺便说一句,万一有人不确定它:应用程序已正确签名并作为系统应用程序安装,因为我们实际上可以访问一些受限制的API,例如PowerManager.goToSleep()

如何在Android模拟器中隐藏应用程序图标?

我有一个应用程序,它在启动完成后自动启动,但是应用程序图标显示在android模拟器中。现在我想要隐藏用户的那个图标。因此,用户无法从应用程序中知道这是蓝色的,他们无法启动手动申请。

layout-finger和layout目录之间的区别

在android中,’res’* layout * layout-finger * layout-land-finger下有不同的子目录 你能解释一下这些目录之间有什么区别吗? 谢谢。

我没有运行Android Studio时可以删除这些构建文件夹吗?

我正在谷歌驱动器备份android工作室项目,我发现构建文件夹包含数千个文件,因此谷歌驱动器最终累了。 我的做法是在退出之前在Android Studio中运行“清理项目”命令,以便清除不必要的文件,并且只备份重要文件。 但有时构建文件夹仍然存在许多文件。 我的问题是,如果我手动删除这两个构建文件夹(见截图),我的项目将在下次启动时再次重建,还是会搞乱我的项目?

如何在Android上使用blender

我想在Android中开发一款小游戏。 但为此,我需要将animation添加到我的Android项目中。 我可以使用blender创建animation,然后将其移植到Android中。 如果没有,那么我可以用什么其他软件在Android上创建animation。 网上有没有这方面的教程。

如何在Android Studio中添加.so,.mk和其他原生文件?

我要在Android Studio的Project中添加原生文件.so,.mk,.sh,.cpp 。 在eclipse中.so文件被添加到libs文件夹和jni和obj文件夹中的其他文件中,并且一切正常。 但是在Android工作室中我已经在jniLibs文件夹中添加了.so文件,并在.gradle文件中进行了如下更改 ndk{ abiFilters ‘armeabi’, ‘armeabi-v7a’, ‘x86’ } sourceSets.main { jniLibs.srcDir ‘src/main/libs’ //set libs as .so’s location instead of jniLibs jni.srcDirs = [] //disable automatic ndk-build call with auto-generated Android.mk } 下面是我的项目结构和我需要添加的文件。 有jni和obj文件夹包含本机代码,我将使用它。 我已经看到可用的链接,但它们已经过时,没有任何效果。 任何帮助表示赞赏。 执行以下更改后记录: sourceSets.main { jniLibs.srcDir ‘src/main/libs’ //set libs as .so’s location instead of jniLibs jni.srcDirs = [] //disable […]

如何将文件写入Android中的外部公共存储,以便从Windows可见?

我的应用程序应将文件保存到以下位置,当您将手机/平板电脑连接到计算机时,可以通过系统文件资源管理器查看它们。 这是我实现文件编写的方式: protected String mDir = Environment.DIRECTORY_DOCUMENTS; protected File mPath = Environment.getExternalStoragePublicDirectory(mDir); protected void writeLogFile(String filename) { File f = new File(mPath, filename + “.txt”); f.getParentFile().mkdirs(); try (BufferedWriter bw = new BufferedWriter(new FileWriter(f, false))) { // Details omitted. } catch (Exception e) { e.printStackTrace(); return; } makeText(“Wrote ” + f.getAbsolutePath()); } 这是我将Sony Xperia Z4平板电脑连接到Windows时所看到的(通知缺少文档文件夹): 这是写入文件的目录(使用上面的实现): […]

Android Studio使用具有相同包名的库和项目

我有一个库,我用作所有Android应用程序的基础,并具有以下清单文件: 然后我尝试在我的一个具有以下清单的项目中使用它: 请注意,使用的包名称是相同的:com.example.android。 由于该应用程序是在com.example.android下发布的,因此我无法为该应用程序更改它。 至于图书馆,由于历史原因,它具有相同的pacakge名称。 当我构建项目时,我收到以下错误: FAILURE:构建因exception而失败。 出了什么问题:任务执行失败’:exampleCom:processDebugResources’。 错误:库使用与此项目相同的包:com.example.android您可以使用android.enforceUniquePackageName = false暂时禁用此错误但是,这是临时的,将在1.0中强制执行 我不想更改库或应用程序的包名称。 我不知道在哪里添加“android.enforceUniquePackageName = false”。 有任何想法吗? 另外,如何解决超过1.0(我已经在使用)?

Android NDK:从JNI C类调用java方法

我有JNI方法,我试图调用Java方法。 这是我的JNI代码 void DummySink::afterGettingFrame(unsigned frameSize, unsigned numTruncatedBytes, struct timeval presentationTime, unsigned /*durationInMicroseconds*/) { __android_log_print(ANDROID_LOG_VERBOSE, “RTSP”, “Frame: %c”, propRec->sPropBytes); jmethodID mid; jclass handlerClass = env9->FindClass(“ob/android/Stream”); if (handlerClass == NULL) { __android_log_print(ANDROID_LOG_VERBOSE, “RTSP-Error”, “Class”); } mid = env9->GetMethodID(handlerClass, “onResponse”, “([B)V”); if (mid == NULL) { __android_log_print(ANDROID_LOG_VERBOSE, “RTSP-Error”, “Method”); } jbyteArray jbArray = env9->NewByteArray((int)propRec->sPropLength); env9->SetByteArrayRegion(jbArray, 0, (int)propRec->sPropLength, (jbyte*)propRec->sPropBytes); […]

带命名空间的Firebase远程配置

RemoteConfig的Firebase API有几种按命名空间分配配置值的方法,例如( setDefaults(R.xml.rc_defaults, “Namespace”) )。 我已经按照Android上的命名空间分配配置值,但是如何在Firebase控制台上按命名空间设置这些值以进行远程更新?