Я разрабатываю приложение для Android, которое может выполнять поиск на основе разрешений. У меня есть код, который принимает и анализирует файлы AndroidManifest.xml в apk-файлах.
Этот код анализирует XML-файл и выдает результат, подобный следующему:
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.ACCESS_NETWORK_STATE
android.permission.INTERNET
У меня есть модель под названием PInfo. Эта модель имеет ArrayList с именем permissions. Когда вы получаете разрешения с «PackageInfo» на Android, это дает следующие результаты.
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.ACCESS_NETWORK_STATE
android.permission.INTERNET
android.permission.WAKE_LOCK
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE
com.google.android.c2dm.permission.RECEIVE
android.permission.READ_EXTERNAL_STORAGE
Файл AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.omfaer.minion">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="com.omfaer.minion.activities.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.omfaer.minion.activities.HomeActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".activities.WallpapersActivity"/>
<provider
android:exported="false"
android:grantUriPermissions="true"
android:authorities="${applicationId}.provider"
android:name="android.support.v4.content.FileProvider">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_path"
/>
</provider>
</application>
</manifest>
Код пакета информации:
List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(context.getPackageManager().GET_PERMISSIONS);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
PInfo deviceApps = new PInfo();
deviceApps.appName = p.applicationInfo.loadLabel(context.getPackageManager()).toString();
deviceApps.appPackage = p.packageName;
deviceApps.appIconId = p.applicationInfo.icon;
StringBuilder strBuilderPermissions = new StringBuilder();
try {
if (p.requestedPermissions != null) {
for (String perms : p.requestedPermissions) {
deviceApps.permissions.add(perms);
}
}
} catch (Exception e) {
//Log.v("PUCA for add permissions ", e.toString());
}
}
Я хочу получить этот результат также на стороне Android.
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.ACCESS_NETWORK_STATE
android.permission.INTERNET
Это должно обеспечить точные результаты для тысяч приложений. Как я могу это сделать?