Ehs*_*san 4 java android deep-linking android-intent
我有两个应用程序(A,B),我想将它们链接在一起。当用户使用应用程序A时,通过单击按钮,我想打开应用程序B并向其中发送一些数据。
我在应用程序A中使用此方法去了应用程序B并将一些数据发送到应用程序B:
public static boolean openApp(Context mContext, String packageName) {
PackageManager manager = context.getPackageManager();
Intent goToEncyclopedia = manager.getLaunchIntentForPackage(packageName);
if (goToEncyclopedia == null) {
return false;
}
goToEncyclopedia.addCategory(Intent.CATEGORY_LAUNCHER);
goToEncyclopedia.putExtra("NAME" , "Ehsan");
context.startActivity(goToEncyclopedia);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我在应用A中这样称呼它:
openApp(mContext, "encyclopedia.rasad.app.codenevisha.com.encyclopedia");
Run Code Online (Sandbox Code Playgroud)
当我调用此方法时,它将打开应用程序B,但我要通过putExtra发送的数据不会发送。
这是我在App B中的代码,用于从Intent接收数据:
Bundle bundle = getIntent().getExtras();
if (bundle != null){
String name = bundle.getString("NAME");
Log.i("EXTRAS", name);
}
Run Code Online (Sandbox Code Playgroud)
在应用B中添加意图过滤器:
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.yourpackage.action" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
从应用程序A传递数据:
Intent intent = new Intent("com.yourpackage.action");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("data","data string");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
从应用B检索数据:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getIntent().getStringExtra("data");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3631 次 |
| 最近记录: |