标签:
1.隐式Intent
通过隐式Intent可以在不知道类名称的情况下 也能调用相关应用,也可以跨应用调用。
首先创建一个新的Activity,然后将视图与Activity绑定。在AndroidMenifest文件中对Activity进行注册。
默认是跨应用的,如果不跨应用,需对注册时的android:exported 进行处理。
分别如下:
public class MyAty extends Activity { //供其他调用的字符串,要同注册在AndroidMenifest.xml文件中的action -name相同。 public static final String ACTION="com.example.ru.intenttest.intent.action.MyAty"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.actyvity_my); //将视图与Activity绑定 } }
<activity android:name=".MyAty" android:exported="false"> <intent-filter> <category android:name="android.intent.category.DEFAULT"></category> <action android:name="com.example.ru.intenttest.intent.action.MyAty"></action> </intent-filter> </activity>
调用方式与显示Intent不同,
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // startActivity(new Intent(MainActivity.this,MyAty.class));//显式Intent startActivity(new Intent(MyAty.ACTION)); //隐式Intent } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStartOther).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { startActivity(new Intent("com.example.ru.intenttest.intent.action.MyAty"));//跨应用,隐式调用 } catch (Exception e) { Toast.makeText(MainActivity.this,"No open",Toast.LENGTH_SHORT).show();//一定要show出来,(这是没权限时的提示) } } }); }
标签:
原文地址:http://www.cnblogs.com/hometown/p/4631306.html