原文地址:http://blog.csdn.net/android_tutor/article/details/6310418#reply

大家好,今天给大家简单分享一下Android中自定义action与permission. 我们在实际开发中,经常会用到系统的功能,比如打电话功能只要如以下简单代码:

  1. Uri uri = Uri.parse("tel.xxxxxx");
  2. Intent it =new Intent(Intent.ACTION_CALL,uri);
  3. startActivity(it);

并且在AndroidManifest.xml文件中添加如下权限:

  1. <uses-permission id="android .permission.CALL_PHONE" />

下面我将实例给大家分享一下自定义action与permission.实例有两个Android工程Demo,与Demo2. Demo工程有两个Activity一个是主Activity,另一个是ViewActivity,这个Activity我们给自定义了android.tutor.action.VIEW的action以及com.tutor.permission.VIEW的permission。

另一个Demo2的主Activity去调用Demo里的ViewActivity,代码如下:

  1. Intent mIntent = new Intent();
  2. mIntent.setAction("android.tutor.action.VIEW");
  3. startActivity(mIntent);

并且要在AndroidMainfest.xml添加以下权限:

  1. <uses-permission android:name="com.tutor.permission.VIEW"></uses-permission>

下面是具体步骤如下:

第一步:新建第一个Android工程Demo.目录结构如下:

第二步:新建名为ViewActivity的Activity,代码如下:

  1. package com.tutor.demo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.TextView;
  5. public class ViewActivity extends Activity {
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. TextView mTextView = new TextView(this);
  10. mTextView.setText("我是自定义action并且加了权限的Activity.");
  11. setContentView(mTextView);
  12. }
  13. }

第三步:在AndroidMainfest.xml中定义action与permission,代码如下:

第6,7,20行代码定义了permission,第18-21行定义了action.第28行是同一个android工程访问ViewActivity也要申请权限.

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.tutor.demo"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <permission android:protectionLevel="normal" android:name="com.tutor.permission.VIEW">
  7.      </permission>
  8. <application android:icon="@drawable/icon" android:label="@string/app_name">
  9. <activity android:name=".Demo"
  10. android:label="@string/app_name">
  11. <intent-filter>
  12. <action android:name="android.intent.action.MAIN" />
  13. <category android:name="android.intent.category.LAUNCHER" />
  14. </intent-filter>
  15. </activity>
  16. <activity android:name=".ViewActivity"
  17. android:label="自定义action与permission"
  18. android:permission="com.tutor.permission.VIEW"
  19. >
  20. <intent-filter>
  21. <action android:name="android.tutor.action.VIEW" />
  22. <category android:name="android.intent.category.DEFAULT" />
  23. </intent-filter>
  24. </activity>
  25. </application>
  26. <uses-permission android:name="com.tutor.permission.VIEW"></uses-permission>
  27. </manifest>

第四步:修改主Activity,Demo.java代码如下(在onCreate()里去跳转到ViewActivity,也需要申请权限的如上面的第28行代码):

  1. package com.tutor.demo;
  2. import com.tutor.demo.R;
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. public class Demo extends Activity {
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. //跳转ViewActivity
  12. Intent mIntent = new Intent();
  13. mIntent.setAction("android.tutor.action.VIEW");
  14. startActivity(mIntent);
  15. }
  16. }

第五步:运行Demo工程,效果如下图:

上面是同一个Android工程里访问ViewActivity的情形,下面我们新建一个Demo2的android工程,去调用ViewActivity.

Demo2.java代码如下:

  1. package com.tutor.demo2;
  2. import com.tutor.demo2.R;
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. public class Demo2 extends Activity {
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. //访问应用demo里的ViewActivity
  12. Intent mIntent = new Intent();
  13. mIntent.setAction("android.tutor.action.VIEW");
  14. startActivity(mIntent);
  15. }
  16. }

在Demo2工程里的AndroidMainifest.xml中申请权限,不加权限程序会报错,代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.tutor.demo2"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <application android:icon="@drawable/icon" android:label="@string/app_name">
  7. <activity android:name=".Demo2"
  8. android:label="@string/app_name">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. <category android:name="android.intent.category.LAUNCHER" />
  12. </intent-filter>
  13. </activity>
  14. </application>
  15. <uses-permission android:name="com.tutor.permission.VIEW"></uses-permission>
  16. </manifest>

运行之效果如下图所示:

一样的效果,呵呵,ok,今天就先讲到这里。

最新文章

  1. 让PDF.NET支持不同版本的SQL Server Compact数据库
  2. Python脚本配合Linux计划任务工作
  3. POJ 1061
  4. tif图片编辑利器
  5. 自定义弹出div对话框
  6. mysql group by 用法解析
  7. VCS仿真生成fsdb文件(Verilog)
  8. python dns查询与DNS传输漏洞查询
  9. 自己对Web标准的理解
  10. centos7下kubernetes(16。kubernetes-滚动更新)
  11. Django组件-用户认证
  12. 机器学习之--KNN算法简单实现
  13. MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别
  14. 【XSY1544】fixed 数学 强连通图计数
  15. bzoj1036点权模板题
  16. CentOS安装Git,并上传、下载
  17. LintCode——数字统计
  18. js验证两次输入的密码是否一致
  19. redis入门基础
  20. ORACLE查询表最近更改的数据 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE

热门文章

  1. 一致性hash-java实现treemap版
  2. WPF--TextBox的验证
  3. 深入理解MySQL中的Redo、Undo、MVCC
  4. RestAPI的实现
  5. centos查找文件
  6. 本地缓存localstorage使用
  7. cordova百度导航插件使用
  8. Hibernate3和4版本的不同
  9. Linux学习之二十-Linux文件系统
  10. 构建Spring Boot程序有用的文章