我正在尝试在拍摄照片时显示对话框,因此我在默认相机应用程序拍摄的照片上设置了广播接收器。 我读到我需要调用一个活动来实现这一点。我设置了活动,因此清单中的主题就像透明
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen
这是我的代码
public class CameraEventReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Cursor cursor = context.getContentResolver().query(intent.getData(), null,null, null, null);
cursor.moveToFirst();
String image_path = cursor.getString(cursor.getColumnIndex("_data"));
Toast.makeText(context, "New Photo is Saved as : -" + image_path, Toast.LENGTH_SHORT).show();
Intent i = new Intent(context, DialogActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
问题是我的主应用程序活动显示在Dialog活动后面,以便显示主要活动。我只想让对话框活动显示在图片的顶部。 有办法解决这个问题吗?
谢谢
编辑:根据要求,我的清单:
<application
android:allowBackup="true"
android:name="MyApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.xx.xx.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>
<activity
android:name=".DialogAcitivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.xx.xx.DIALOGACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<receiver
android:name=".CameraEventReceiver"
android:enabled="true" >
<intent-filter>
<action android:name="com.android.camera.NEW_PICTURE" />
<action android:name="android.hardware.action.NEW_PICTURE" />
<data android:mimeType="image/*" />
</intent-filter>
</receiver>
</application>
我的按钮代码,基本上要求用户输入值:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent intent = getIntent();
promptUser();
}
private void promptUser() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
builder.setMessage(R.string.msg)
.setCancelable(false)
.setView(input)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString();
storeValue(value);
dialog.dismiss();
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
答案 0 :(得分:2)
你的应用程序活动显示在对话框后面的原因是因为android正在切换整个活动任务。你的对话活动是(我假设)与你的其他活动在同一个任务中开始。
你想要的是给你的对话活动一个不同的任务亲和力,而不是你的其他活动的(默认)亲和力。
<activity
...
android:taskAffinity="com.foo.bar.myaffinity"/>
现在,此活动不会启动与其他活动相同的任务,当您启动活动时,其他活动将不会显示在其后面。
答案 1 :(得分:1)
您想要的是从结果中获取图像,然后在某些活动的布局中显示它。显示图像后,启动对话框。