Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我是否可以获得其他应用程序';安卓系统中有哪些可用的屏幕方向?_Android_Android Activity_Screen Orientation - Fatal编程技术网

Android 我是否可以获得其他应用程序';安卓系统中有哪些可用的屏幕方向?

Android 我是否可以获得其他应用程序';安卓系统中有哪些可用的屏幕方向?,android,android-activity,screen-orientation,Android,Android Activity,Screen Orientation,我有一个计划,在安卓系统中开发屏幕定位服务,允许在一些手机中使用倒立的肖像。例如,我的是Nexus6,不能从自动旋转中倒转 我正在使用其他旋转控制应用程序。它缺少一个我需要的功能 我想允许力从传感器旋转。但应用程序的首选方向限制为纵向或横向。如果应用程序设计为纵向模式,则它可以旋转0度或180度,但不能旋转90度或270度,反之亦然 我使用的所有应用程序都不能设置为那样。当传感器向下对齐时,它强制横向应用程序为纵向,结果非常难看 要做到这一点,我想我需要获取ApplicationInfo或类似的

我有一个计划,在安卓系统中开发屏幕定位服务,允许在一些手机中使用倒立的肖像。例如,我的是Nexus6,不能从自动旋转中倒转

我正在使用其他旋转控制应用程序。它缺少一个我需要的功能

我想允许力从传感器旋转。但应用程序的首选方向限制为纵向或横向。如果应用程序设计为纵向模式,则它可以旋转0度或180度,但不能旋转90度或270度,反之亦然

我使用的所有应用程序都不能设置为那样。当传感器向下对齐时,它强制横向应用程序为纵向,结果非常难看

要做到这一点,我想我需要获取ApplicationInfo或类似的东西,并获取应用程序清单中设置的“android:screenOrientation”的值

可能吗

附:这是我想开发的服务示例


在活动中的AndroidMaifest中使用此选项
android:screenOrientation=“sensor”

您可以读取其他应用程序的清单文件:

PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(PackageManager.GET_META_DATA | PackageManager.GET_SHARED_LIBRARY_FILES);
for(ApplicationInfo app : apps){
    try {
        ZipFile apk = new ZipFile(app.publicSourceDir);
        ZipEntry manifest = apk.getEntry("AndroidManifest.xml");
        if (manifest != null){
            byte[] binaryXml = toByteArray(apk.getInputStream(manifest));
            // decode binary Xml
        }
        apk.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static byte[] toByteArray(InputStream in) throws IOException {
    try {
        byte[] buf = new byte[1024*8];
        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
            int len;
            while ((len = in.read(buf)) != -1) {
                bos.write(buf, 0, len);
            }
            return bos.toByteArray();
        }
    } finally {
        in.close();
    }
}

对不起,我想你误解了。我想写一个服务,在打开其他应用程序时控制android设备,而不是自己写应用程序不,没有办法做到这一点。除非你有权访问源代码。你能做的最接近的事情就是通过使用屏幕覆盖来检测屏幕上的项目,例如,如果键盘处于活动状态,但这不能给你另一个android应用程序的布局。我还没有测试这个,但我在赏金得到之前信任你。我很感激!不用担心,正如我所说的,唯一棘手的部分是转换二进制XML->字符串XML
String xml = AndroidXMLDecompress.decompressXML(binaryXml);