Far*_*zad 4 android intentfilter android-intent android-activity
我试图通过Android中的Intent在App1和App2之间发送数据
我使用了这段代码,但无法解决我的问题。
App1 MainActivity:
Intent i2 = new Intent("com.appstore.MainActivity");
i2.setPackage("com.appstore");//the destination packageName
i2.putExtra("Id", "100");
startActivity(i2);
Run Code Online (Sandbox Code Playgroud)
App2 MainActivity:
Bundle data = getIntent().getExtras;
if(data!=null){
String myString = b.getString("Id");
}
Run Code Online (Sandbox Code Playgroud)
Manfiest App2 MainActivity:
<activity android:name=".MainActivity">
<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="image/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
最终代码:
应用程式1:
Intent intent = new Intent();
intent.setClassName("com.appstore", "com.appstore.MyBroadcastReceiver");
intent.setAction("com.appstore.MyBroadcastReceiver");
intent.putExtra("KeyName","code1id");
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
应用程式2:
Reciver:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Data Received from External App", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
清单:
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="first_app_packagename" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
主要活动 :
MyBroadcastReceiver mReceiver = new MyBroadcastReceiver();
registerReceiver(mReceiver,
new IntentFilter("first_app_packagename"));
Run Code Online (Sandbox Code Playgroud)
使用Bundle.putSerializable(Key,Object);和Bundle.putParcelable(Key, Object);
前一个对象必须实现Serializable,后一个对象必须实现Parcelable。
| 归档时间: |
|
| 查看次数: |
6978 次 |
| 最近记录: |