关于intent.setFlags()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package seker.mygallery; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import seker.mygallery.R; import seker.mygallery.view.GalleryAdapter; import seker.mygallery.view.MyAdapterView; import seker.mygallery.view.MyGallery; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.SimpleAdapter; public class MainActivity extends Activity implements Runnable { public static final String NAME = "name"; public static final String NUMBER = "number"; public static final String IMAGE = "image"; SimpleAdapter m_simpleadapter; GalleryAdapter m_galleryadapter; private List<Map<String, Object>> m_list; private static final int FINISH_GET_APPS = 1024; List<ResolveInfo> m_infos; PackageManager m_packageMgr; MyGallery g1, g2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); m_packageMgr = getPackageManager(); initMyGallery1(); Thread thread = new Thread(this); thread.start(); } private Handler handler = new Handler(){ public void handleMessage(Message msg){ switch (msg.what) { case FINISH_GET_APPS: initMyGallery2(); break; } } }; @Override public void run() { Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); m_infos = m_packageMgr.queryIntentActivities(mainIntent, 0); Collections.sort(m_infos, new ResolveInfo.DisplayNameComparator(m_packageMgr)); Message message = new Message(); message.what = FINISH_GET_APPS; handler.sendMessage(message); } private void initMyGallery1() { initData(); m_simpleadapter = new SimpleAdapter(this, m_list, R.layout.gallerychild_box , new String[] {NAME, NUMBER, IMAGE} , new int[] {R.id.name, R.id.box_num, R.id.AppBtnImageView}); g1 = (MyGallery) findViewById(R.id.myGallery1); g1.setAdapter(m_simpleadapter); g1.setSelection(0); g1.setOnItemClickListener(itemclick_listener1); } private void initMyGallery2() { m_galleryadapter = new GalleryAdapter(this, m_infos, m_packageMgr); g2 = (MyGallery) findViewById(R.id.myGallery2); g2.setAdapter(m_galleryadapter); g2.setSelection(0); g2.setOnItemClickListener(itemclick_listener2); } MyGallery.OnItemClickListener itemclick_listener1 = new MyGallery.OnItemClickListener() { private int testIndex = 0; @Override public void onItemClick(MyAdapterView<?> parent, View view, int position, long id) { if (0 == position) { Map<String, Object> map = new HashMap<String, Object>(); map.put(NAME, "add" + testIndex); map.put(NUMBER, testIndex ++); map.put(IMAGE, R.drawable.img00); m_list.add(1, map); m_simpleadapter.notifyDataSetChanged(); } } }; MyGallery.OnItemClickListener itemclick_listener2 = new MyGallery.OnItemClickListener() { @Override public void onItemClick(MyAdapterView<?> parent, View view, int position, long id) { ResolveInfo info = m_infos.get(position); String packageName = info.activityInfo.applicationInfo.packageName; String className = info.activityInfo.name; Log.d("StartActivity", "packageName = " + packageName + "\tclassName = " + className); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setComponent(new ComponentName(packageName, className)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); startActivity(intent); } }; private void initData() { m_list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put(NAME, "img1"); map.put(NUMBER, 1); map.put(IMAGE, R.drawable.img01); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img2"); map.put(NUMBER, 2); map.put(IMAGE, R.drawable.img02); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img3"); map.put(NUMBER, 3); map.put(IMAGE, R.drawable.img03); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img4"); map.put(NUMBER, 4); map.put(IMAGE, R.drawable.img04); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img5"); map.put(NUMBER, 5); map.put(IMAGE, R.drawable.img05); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img6"); map.put(NUMBER, 6); map.put(IMAGE, R.drawable.img06); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img7"); map.put(NUMBER, 7); map.put(IMAGE, R.drawable.img07); m_list.add(map); map = new HashMap<String, Object>(); map.put(NAME, "img8"); map.put(NUMBER, 8); map.put(IMAGE, R.drawable.img08); m_list.add(map); } }
/** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); shortcut.putExtra("duplicate", false); //不允许重复创建 //指定当前的Activity为快捷方式启动的对象: 如 //com.everest.video.VideoPlayer //注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序 ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName()); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); //快捷方式的图标 ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); sendBroadcast(shortcut); } /** * 删除程序的快捷方式 */ private void delShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); //指定当前的Activity为快捷方式启动的对象: 如 //com.everest.video.VideoPlayer //注意: ComponentName的第二个参数必须是完整的类名(包名+类名),否则无法删除快捷方式 String appClass = this.getPackageName() + "." +this.getLocalClassName(); ComponentName comp = new ComponentName(this.getPackageName(), appClass); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); sendBroadcast(shortcut); } 全屏显示 this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 横竖屏显示 private void changedScreen(){ int request = this.getRequestedOrientation(); if(request == -1){ Toast.makeText(TaskRunActivity.this, "None 1", Toast.LENGTH_SHORT).show(); }else{ if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){ this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } } 获取手机分辩率 DisplayMetrics dm = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; 图形用户界面 文本框(TextView) 列表(ListView) 卷轴视图(ScrollView) 编辑框(EditText) 按钮(Button) 下载列表(Spinner) 多项选择(CheckBok) 图形用户界面 菜单(Menu) 提示(toast) 对话框(Dialog) 日期(DatePicker) 时间(TimePicker) 单项选择(RadioGroup RadioButton) 图形用户界面 线性布局(LinearLayout) 相对布局(RelativeLayout) 绝对布局(AbsoluteLayout) 表格布局(TableLayout) 数据据存储 系统偏好 文件 网络 数据库 显示网页: 1. Uri uri = Uri.parse("http://www.google.com"); 2. Intent it = new Intent(Intent.ACTION_VIEW,uri); 3. startActivity(it); 显示地图: 1. Uri uri = Uri.parse("geo:38.899533,-77.036476"); 2. Intent it = new Intent(Intent.Action_VIEW,uri); 3. startActivity(it); 路径规划: 1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); 2. Intent it = new Intent(Intent.ACTION_VIEW,URI); 3. startActivity(it); 拨打电话: 调用拨号程序 1. Uri uri = Uri.parse("tel:xxxxxx"); 2. Intent it = new Intent(Intent.ACTION_DIAL, uri); 3. startActivity(it); 1. Uri uri = Uri.parse("tel.xxxxxx"); 2. Intent it =new Intent(Intent.ACTION_CALL,uri); 3. 要使用这个必须在配置文件中加入<uses-permission id="Android.permission.CALL_PHONE" /> 发送SMS/MMS 调用发送短信的程序 1. Intent it = new Intent(Intent.ACTION_VIEW); 2. it.putExtra("sms_body", "The SMS text"); 3. it.setType("vnd.android-dir/mms-sms"); 4. startActivity(it); 发送短信 1. Uri uri = Uri.parse("smsto:0800000123"); 2. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 3. it.putExtra("sms_body", "The SMS text"); 4. startActivity(it); 发送彩信 1. Uri uri = Uri.parse("content://media/external/images/media/23"); 2. Intent it = new Intent(Intent.ACTION_SEND); 3. it.putExtra("sms_body", "some text"); 4. it.putExtra(Intent.EXTRA_STREAM, uri); 5. it.setType("image/png"); 6. startActivity(it); 发送Email 1. 2. Uri uri = Uri.parse("mailto:[email protected]"); 3. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 4. startActivity(it); 1. Intent it = new Intent(Intent.ACTION_SEND); 2. it.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 3. it.putExtra(Intent.EXTRA_TEXT, "The email body text"); 4. it.setType("text/plain"); 5. startActivity(Intent.createChooser(it, "Choose Email Client")); 1. Intent it=new Intent(Intent.ACTION_SEND); 2. String[] tos={"[email protected]"}; 3. String[] ccs={"[email protected]"}; 4. it.putExtra(Intent.EXTRA_EMAIL, tos); 5. it.putExtra(Intent.EXTRA_CC, ccs); 6. it.putExtra(Intent.EXTRA_TEXT, "The email body text"); 7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 8. it.setType("message/rfc822"); 9. startActivity(Intent.createChooser(it, "Choose Email Client")); 添加附件 1. Intent it = new Intent(Intent.ACTION_SEND); 2. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 3. it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/mysong.mp3[/url]"); 4. sendIntent.setType("audio/mp3"); 5. startActivity(Intent.createChooser(it, "Choose Email Client")); 播放多媒体 1. 2. Intent it = new Intent(Intent.ACTION_VIEW); 3. Uri uri = Uri.parse("[url=]file:///sdcard/song.mp3[/url]"); 4. it.setDataAndType(uri, "audio/mp3"); 5. startActivity(it); 1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); 2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 3. startActivity(it); Uninstall 程序 1. Uri uri = Uri.fromParts("package", strPackageName, null); 2. Intent it = new Intent(Intent.ACTION_DELETE, uri); 3. startActivity(it); //调用相册 public static final String MIME_TYPE_IMAGE_JPEG = "image/*"; public static final int ACTIVITY_GET_IMAGE = 0; Intent getImage = new Intent(Intent.ACTION_GET_CONTENT); getImage.addCategory(Intent.CATEGORY_OPENABLE); getImage.setType(MIME_TYPE_IMAGE_JPEG); startActivityForResult(getImage, ACTIVITY_GET_IMAGE); //调用系统相机应用程序,并存储拍下来的照片 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); time = Calendar.getInstance().getTimeInMillis(); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment .getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg"))); startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE); uninstall apk Uri uninstallUri = Uri.fromParts("package", "xxx", null); returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri); install apk Uri installUri = Uri.fromParts("package", "xxx", null); returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri); play audio Uri playUri = Uri.parse("[url=]file:///sdcard/download/everything.mp3[/url]"); returnIt = new Intent(Intent.ACTION_VIEW, playUri); //发送附件 Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/eoe.mp3[/url]"); sendIntent.setType("audio/mp3"); startActivity(Intent.createChooser(it, "Choose Email Client")); //搜索应用 Uri uri = Uri.parse("market://search?q=pname:pkg_name"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //where pkg_name is the full package path for an application //进入联系人页面 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(People.CONTENT_URI); startActivity(intent); //查看指定联系人 Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id联系人ID Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(personUri); startActivity(intent); 在进行Android开发的过程中,免不了,要开发TCP/UDP通讯的程序,下面这两段代码,分别介绍了TCP/UCP通过的一个实例: 代码一: private void tcpdata() { try { Socket s = new Socket("192.168.0.25", 65500); // outgoing stream redirect to socket OutputStream out = s.getOutputStream(); // 注意第二个参数据为true将会自动flush,否则需要需要手动操作out.flush() PrintWriter output = new PrintWriter(out, true); output.println("Hello IdeasAndroid! 伪IP为:" + SIMCardToIP("13512345006")); InputStream inputStream = s.getInputStream(); DataInputStream input = new DataInputStream(inputStream); byte[] b = new byte[10000]; int length = input.read(b); inputReader = new InputStreamReader(inputStream); String Msg = new String(b, 0, length, "gb2312"); Toast.makeText(TcpTest.this, Msg, 1000).show(); Log.d("Tcp Demo", "message From Server:" + Msg); s.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 下面的代码是UDP通讯的过程: public String send(String msg) { StringBuilder sb = new StringBuilder(); InetAddress local = null; try { local = InetAddress.getByName("192.168.0.25"); // 本机测试 } catch (UnknownHostException e) { e.printStackTrace(); } try { dSocket = new DatagramSocket(); // 注意此处要先在配置文件里设置权限,否则会抛权限不足的异常 } catch (SocketException e) { e.printStackTrace(); } int msg_len = msg == null ? 0 : msg.length(); DatagramPacket dPacket = new DatagramPacket(msg.getBytes(), msg_len, local, SERVER_PORT); try { dSocket.send(dPacket); } catch (IOException e) { e.printStackTrace(); } try { dSocket.receive(dPacket); sb.append(new String(dPacket.getData())); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } dSocket.close(); return sb.toString(); }
多种GPS定位方式和定位研究开发心得,提供了百度定位 和 谷歌定位两种方式,基站、wifi、net定位。 google定位代码   package com.javenwong.google_gps; import android.app.Activity;import android.content.Context;import android.content.Intent;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast; public class Google_gpsActivity extends Activity { TextView tv1;     /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                        Intent i = new Intent(this, ServiceTest.class);         i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         startService(i);         tv1 = (TextView) this.findViewById(R.id.tv1);                openGPSSettings();//        String ip=GetHostIp();//        tv1.setText(ip);//        Log.i("hello", "ip is"+ip);      //  getLocation();        //tv1.setText(ip);                    tv1.setText("hello");    }        private void openGPSSettings() {        LocationManager alm = (LocationManager) this                .getSystemService(Context.LOCATION_SERVICE);        if (alm                .isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER)) {            Toast.makeText(this, "Net模块正常", Toast.LENGTH_SHORT)                    .show();            return;        }         Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();//        Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);//        startActivityForResult(intent,0); //此为设置完成后返回到获取界面     } ......
`intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)` 是用于设置 Intent 的标志,指示在启动活动时创建一个新的任务。 通过设置该标志,您可以在一个新的任务中启动活动,而不是将其添加到当前任务的堆栈中。这意味着新活动将在一个新的任务栈中打开,并成为该任务的根活动。 这种情况通常发生在以下情况下: 1. 在非活动上下文中启动活动:例如,在服务、广播接收器或应用程序的后台任务中启动活动时,由于缺乏 UI 上下文,您需要设置 `FLAG_ACTIVITY_NEW_TASK` 标志来创建一个新的任务,以便启动活动。 2. 启动独立的任务:有时,您可能希望将某个活动作为一个单独的任务打开,而不是与当前应用程序的任务关联。通过设置 `FLAG_ACTIVITY_NEW_TASK` 标志,您可以实现这一点。 下面是一个示例代码片段,演示如何使用 `intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)` 启动一个新的任务: ```java Intent intent = new Intent(context, YourActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); ``` 在此示例中,我们创建了一个 Intent 对象,指定目标活动为 `YourActivity`。然后,我们使用 `setFlags()` 方法设置 `FLAG_ACTIVITY_NEW_TASK` 标志。最后,我们使用 `startActivity()` 方法启动活动。 请注意,使用 `FLAG_ACTIVITY_NEW_TASK` 标志启动活动时,您需要确保目标活动在 AndroidManifest.xml 文件中被声明为具有 `android:launchMode="standard"` 或 `android:launchMode="singleTask"` 属性,以便正确处理任务和活动的创建和销毁。 如果您有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值