序文
私たちは運動中に音楽を聴くためにイヤホンを着用することが多いので、歩数計で走るときは当然、お気に入りの音楽プレーヤーをオンにする必要があります。便宜上、インストールされている音楽プレーヤーを呼び出すためのボタンを歩数計に追加しましたが、どう検索しても開くことができるAPPが見つかりませんでしたが、携帯電話には音楽プレーヤーがあります。長い間迷った結果、システムに付属の音楽プレーヤーだけが見つかり、他は見つかりませんでした。<queries> タグを見て初めてそのことに気づきました。
達成
AndroidManifest.xml ファイル内
...
<queries>
<intent>
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="audio/*"/>
</intent>
<intent>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent>
</queries>
<application
...
実装:
private void getMedia(){
String TAG = "music";
Log.i(TAG, "test: ");
// 创建一个 Intent 对象,设置 action 为 ACTION_VIEW,type 为 audio/*
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://"),"audio/mp3");
// 查询所有可以处理该 Intent 的应用程序
PackageManager pm = getPackageManager();
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
List<String> apps = new ArrayList<>();
// 遍历查询结果,获取所有可以处理音频的应用程序的信息
for (ResolveInfo resolveInfo : resolveInfos) {
String packageName = resolveInfo.activityInfo.packageName;
String className = resolveInfo.activityInfo.name;
String label = resolveInfo.loadLabel(pm).toString();
// 处理查询结果
Log.i(TAG, "packageName: "+packageName);
Log.i(TAG, "className: "+className);
Log.i(TAG, "label: "+label);
apps.add(label);
}
}
ご覧のとおり、<query> タグにコンテンツを追加すると、それを取得できます。