Android错误活动在接收简单数据时打开(来自chrome的链接)
所以这是我在网站上的第一个问题,希望我能清楚地表达自己,并提前感谢大家的帮助 我的应用程序假设从Chrome接收一个链接,但我想要一个特定的活动来接收intent,让我们称之为receive_url_活动。 此活动显示我拥有的项目的recyclerView,通过按其中一个项目,它将打开一个新的“活动管理”\u“项目”\u活动,显示此项目拥有的所有链接 现在,对于这个问题,当我第一次从chrome上共享链接时,它工作正常。当按下打开的一个项目时,我可以选择一个项目。单击“管理项目”活动并添加链接。 但当我第二次尝试这样做时,它会打开我离开应用程序之前打开的最后一个活动,而不是我想要的活动 当我手动接收_url_活动并选择一个项目时,它会添加我第一次共享的链接,而不是我第二次尝试共享的链接 在我的清单中,我标记了我谈论的两项活动: `Android错误活动在接收简单数据时打开(来自chrome的链接),android,Android,所以这是我在网站上的第一个问题,希望我能清楚地表达自己,并提前感谢大家的帮助 我的应用程序假设从Chrome接收一个链接,但我想要一个特定的活动来接收intent,让我们称之为receive_url_活动。 此活动显示我拥有的项目的recyclerView,通过按其中一个项目,它将打开一个新的“活动管理”\u“项目”\u活动,显示此项目拥有的所有链接 现在,对于这个问题,当我第一次从chrome上共享链接时,它工作正常。当按下打开的一个项目时,我可以选择一个项目。单击“管理项目”活动并添加链接。
}因此代码中缺少两件事: 我将下一个标签添加到清单中的Receive_url_活动中,这一个似乎起到了作用 android:launchMode=singleTask,发现此网站解释了对活动生命周期的影响: 现在代码如下所示:
<activity
android:name=".Receive_Url_Activity"
android:label="@string/title_activity_receive__url_"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
public class Receive_Url_Activity extends Activity {
private RecyclerView mRecyclerView;
private ProjectsRecyclerAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
ProjectsList projects;
String sharedLink;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receive__url_);
manageActivity();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_receive__url_, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onResume(){
super.onResume();
}
public void manageActivity(){
Intent intent=getIntent();
sharedLink=intent.getStringExtra(Intent.EXTRA_TEXT);
mRecyclerView = (RecyclerView)findViewById(R.id.receive_url_recycler);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new ProjectsRecyclerAdapter();
mRecyclerView.setAdapter(mAdapter);
//set GestureDetector
final GestureDetector mGestureDetector = new GestureDetector(Receive_Url_Activity.this, new GestureDetector.SimpleOnGestureListener() {
@Override public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
View child = recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY());
if(child!=null && mGestureDetector.onTouchEvent(motionEvent)){
int childNumber=recyclerView.getChildPosition(child);
int flag=1;
String link=sharedLink;
Bundle extras=new Bundle();
extras.putInt("CHILD_NUMBER",childNumber);
extras.putInt("FLAG",flag);
extras.putString("SHARED_LINK",link);
Intent intent=new Intent(Receive_Url_Activity.this, project_manager_Activity.class);
intent.putExtra("EXTRAS",extras);
startActivity(intent);
return true;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
}
});
}
<activity
android:name=".Receive_Url_Activity"
android:label="@string/title_activity_receive__url_"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
protected void onNewIntent(Intent intent){
setIntent(intent);
manageActivity(intent);
}