- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我正在进行的项目中,我遇到了接收外部 Intent (即非启动器 Intent )的问题。我有一个 Activity
可以使用普通的 LAUNCHER
intent 启动,但它也响应来自其他应用程序的 SEND
intents,例如在 YouTube 应用程序中分享视频链接。我第一次从其他应用程序共享链接时,我的 Activity
已创建,我可以使用 getIntent()
获取 Intent 的详细信息,即EXTRA_TEXT
。如果我关闭我的 Activity
并使用另一个链接重试,那也能正常工作。但是,如果我不关闭我的 Activity
,通过“主页”或“最近启动的应用”返回到其他应用,并分享另一个链接,我的 Activity
就会出现回到前台,但 getIntent()
导致旧 intent,而不是我认为会触发我的 Activity
重启的新 intent >.
我创建了一个 MCVE 来说明这个问题:
Activity
:
public class MainActivity extends ActionBarActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("MainActivity", "onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.intent_text);
}
@Override
protected void onResume() {
Log.d("MainActivity", "onResume");
super.onResume();
Intent intent = getIntent();
String text;
if (intent.hasExtra(Intent.EXTRA_TEXT)) {
text = intent.getExtras().getString(Intent.EXTRA_TEXT);
} else {
text = "nothing";
}
tv.setText(text);
}
}
list :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intenttest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="IntentTest"
android:theme="@style/Theme.AppCompat" >
<activity
android:name=".MainActivity"
android:label="IntentTest" >
<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.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
</activity>
</application>
</manifest>
为了完整起见,简单的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.intenttest.MainActivity" >
<TextView
android:id="@+id/intent_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
我觉得我在这里缺少一些基本的东西。如何让我的应用程序响应新的 Intent
?
最佳答案
添加android:launchMode="singleTop"
到 <activity>
说明。
当 Activity 启动时(如果它尚未运行),Android 将调用 onCreate()
你可以获得Intent
调用getIntent()
(就像您已经在做的那样)。
如果在您的应用已在运行时启动 Activity,Android 会将其带到前台并调用 onNewIntent()
传入新的 Intent
.您应该覆盖此方法并对传递的 Intent
做一些事情(将其保存在成员变量中或从中提取您想要的内容或其他内容)。之后安卓会调用onResume()
.
调用 getIntent()
将始终返回 Intent
最初用于启动 Activity。
关于android - 接收连续的 SEND Intent 将应用程序带回前台,但不会更新 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969169/
这个问题在这里已经有了答案: Call native javascript function that has been "erased" by the web page (1 个回答) 关闭 4
我有一个 UITableViewController。 但是当我滚动到顶部时,可以在状态栏上看到表格数据,如下所示: 我怎样才能绕过这个时刻? 最佳答案 您可以使用下一个代码段隐藏状态栏: overr
我想让一个 View 显示在另一个 View 的顶部。 这是我的 View 层次结构: 基本上我想把按钮(重新开始)放在属于 PageViewController 的 UIImageView 前面。所
这是一个代码片段 tips = sns.load_dataset("tips") g = sns.FacetGrid(tips, col = 'time') g = g.map(plt.hist, "
下面的 php 数据库查询(来自 phpMyAdmin)只将一个值(第一个或最旧的)带回 amcharts: set_no_cache(); // do whatever you wa
我正在使用 mootools 从一个元素中获取 id,但它不起作用,它返回了 id 和 null。 $$(".obj").addEvent("click",function(){ var o
从内存中,微软拿了 AppDomain离开了,这个机制已经被关闭了。 现在突然发现AppDomain回来了: Assembly System.Runtime.Extensions, Version=4
我是一名优秀的程序员,十分优秀!