一:无需传参的供应其他应用调用
第一种方法:这种方法在手机的应用程序界面是看不到被调用的应用的,
在AndroidManifest.xml中被调用的Activity的节点下自定义Action,在调用方使用Intent(String action)构造方法调用
注意:两个Activity可以属于不同的应用
例如:被调用方的AndroidManifest.xml
<activity
android:name="com.sym.second.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.sym.myaction"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
调用方调用:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
Intent intent = new Intent("com.sym.myaction");
startActivity(intent);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "该界面不存在!", Toast.LENGTH_LONG).show();
}
}
});
第二种方法:这种方法在手机的应用程序界面是看得到被调用的应用的
例如:被调用方的AndroidManifest.xml
<activity
android:name="com.sym.second.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
调用方调用:
ComponentName componetName = new ComponentName(
// 这个是另外一个应用程序的包名
"com.chartcross.test",
// 这个参数是要启动的Activity
"com.chartcross.test.MainActivity");
Intent intent = new Intent();
intent.setComponent(componetName);
startActivity(intent);
二:需要传参的供应其他应用调用
例如:被调用方的AndroidManifest.xml
<activity
android:name="com.sym.second.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.sym.myaction"/>
<data android:scheme="my"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
调用方调用:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
Uri uri = Uri.parse("my://传递值:您好!");
Intent intent = new Intent("com.sym.myaction", uri);
startActivity(intent);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "该界面不存在!", Toast.LENGTH_LONG).show();
}
}
});
在被调用方的接收传递过来的参数:
Uri uri = getIntent().getData();
String str = uri.getHost();
tv.setText(str);
这样str的值就为:传递值:您好!