Я хочу получить пакет из текста - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть два textview1 и textview2 и одна button1, а textview1 содержит пакет, например, «com.package.name», и я хочу получить это имя пакета из textview1 и показать его в textview2, и я думаю, что могу взять егоиспользуя regex, но я не знаю, как использовать regex

Еще одна вещь, которую может изменить пакет в textview1, пожалуйста, помогите мне во второй раз, когда я задаю тот же вопрос

textview1выглядеть так

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mycompany.myapp2" >

    <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

ваше текстовое представление содержит XML, вы можете проанализировать этот XML и получить нужное вам свойство, вы можете увидеть, как анализировать XML-текст по этой ссылке

0 голосов
/ 01 марта 2019

этот метод извлечет пакет из строки XML, как ваш textView1, используйте метод ниже, чтобы получить пакет

Java

String getPackageNameFromXml(String s) {
    try {
        XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
        XmlPullParser myParser = xmlFactoryObject.newPullParser();
        myParser.setInput(new StringReader(s));
        int event = myParser.getEventType();
        while (event != XmlPullParser.END_DOCUMENT) {
            String name = myParser.getName();
            switch (event) {
                case XmlPullParser.START_TAG: {
                    if (name.toLowerCase().equals("manifest")) {
                        String packageName = myParser.getAttributeValue(null, "package");
                        if (packageName != null) {
                            return packageName;
                        }
                    }
                }
                break;

                case XmlPullParser.END_TAG: {

                }
                break;
            }
            event = myParser.next();
        }
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "";
}

Kotlin

fun getPackageNameFromXml(s: String): String {
    try {
        val xmlFactoryObject = XmlPullParserFactory.newInstance()
        val myParser = xmlFactoryObject.newPullParser()
        myParser.setInput(StringReader(s))
        var event = myParser.eventType
        while (event != XmlPullParser.END_DOCUMENT) {
            val name = myParser.name
            when (event) {
                XmlPullParser.START_TAG -> {
                    if (name.toLowerCase() == "manifest") {
                        val packageName = myParser.getAttributeValue(null, "package")
                        if (packageName != null) {
                            return packageName
                        }
                    }
                }

                XmlPullParser.END_TAG -> {

                    }
            }
            event = myParser.next()
        }
    } catch (e: XmlPullParserException) {
        e.printStackTrace()
    } catch (e: IOException) {
        e.printStackTrace()
    }
    return ""
}

просто вызовите этот метод, как показано ниже

textView2.setText(getPackageNameFromXml(textView1.getText().toString()))

ScreenShot

0 голосов
/ 27 февраля 2019

Используйте getText () для вышеуказанной задачи:

Строковое значение = textView2.getText (). ToString ();

textView1.setText (value);

и для получения имени пакета используйте

BuildConfig.APPLICATION_ID

, например:

textView1.setText (BuildConfig.APPLICATION_ID);

String value = textView1.getText (). ToString ();textView2.setText (значение);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...