我有一个显示pdfs的库项目。我的主项目有一些我想要显示的PDF。所以我用它。此外,我为显示pdf的活动添加了intent过滤器(以便其他应用程序也可以使用它来显示pdf)。
我想检测我的PDFviewER是否是由我自己的活动启动的(如果它是从外部启动的话我想显示标题栏)我该怎么做?
这是我的活动声明:
<activity
android:name="com.artifex.mupdfdemo.MuPDFActivity"
android:theme="@android:style/Theme.Holo.Light"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/vnd.ms-xpsdocument"/>
<data android:mimeType="application/xps"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/pdf"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/x-cbz"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.xps"/>
<data android:host="*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.pdf"/>
<data android:host="*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="file"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.cbz"/>
<data android:host="*"/>
</intent-filter>
</activity>
答案 0 :(得分:1)
我不能告诉你,是否可以获得启动意图的活动,但作为一种解决方法,你可以在你的Intent中放置一个布尔值,以确保你的应用程序启动了你的PDFViewer。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(fileUri);
intent.putExtra("myAppStarted", true);
在您开始的活动中:
boolean displayTitleBar = getIntent().getBooleanExtra("myAppStarted", false);
请注意,建议使用带有“myAppStarted”的静态final String变量,而不是在不同位置对String进行硬编码。
答案 1 :(得分:0)
如果您的活动是使用startActivityForResult启动的,则可以使用getCallingActivity。更好的解决方案是在您的意图中添加额外信息,告诉您调用活动是否属于您的。
答案 2 :(得分:0)
AppCompat.getReferrer()
应该返回启动了您的Activity
的包名称。