意向过滤器不会进入Android系统
我想注册我的应用程序以与某个文件扩展名关联。 AndoidManifest.xml包含:意向过滤器不会进入Android系统,android,intentfilter,Android,Intentfilter,我想注册我的应用程序以与某个文件扩展名关联。 AndoidManifest.xml包含: <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name"
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".IntentTestActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:host="*" />
<data android:pathPattern=".*\\.XXX" />
</intent-filter>
</activity>
</application>
但我甚至没有在查看操作列表中看到我的应用程序。
即使在我的应用程序中,此代码也显示除我的应用程序以外的任何内容:
final PackageManager packageManager = getPackageManager();
final Intent intent = new Intent("android.intent.action.VIEW");
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo r : list) {
Log.d("XXX", "" + r);
}
final-PackageManager-PackageManager=getPackageManager();
最终意图=新意图(“android.Intent.action.VIEW”);
列表=packageManager.QueryInputActivities(意图,
PackageManager.MATCH_(仅限默认值);
用于(信息解析程序:列表){
对数d(“XXX”和“+r”);
}
有什么问题,或者我应该如何将文件扩展名与特定操作关联?这为我解决了问题: dropbax、google drive和其他应用程序的完整路径中似乎都有点“.”, 而且安卓正则表达式不是贪婪的
<data android:pathPattern=".*\\.XXX" />
<data android:pathPattern=".*\\..*\\.XXX" />
<data android:pathPattern=".*\\..*\\..*\\.XXX" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.XXX" />
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.XXX" />