Permission禁止A程序打开B程序

在编写代码的过程中,我们经常会使用Intent来打开另一个Activity,除此之外,我们还可以用Intent来打开其他应用中的Activity。

首先我建立了两个Android项目,一个叫做PermissionsTest1(B),另一个叫做PermissionsTest2(A),在这个测试中要做的就是通过A项目打开B项目。

我在A项目中放置了一个按钮,为他设置了点击事件

Intent intent=new Intent();
intent.setClassName("com.example.permissionstest1", "com.example.permissionstest1.MainActivity");
startActivity(intent);

当我们点击这个按钮的时候,就可以打开B程序中的MainActivity了。

但是如果我们不想让别人随便打开我们的程序B,那我们在编写程序B的时候有什么办法呢?

使用自定义Permission:

首先我们需要在B的Manifest文件中定义一个permission。

<permission android:name="com.per.permissionstest1" android:protectionLevel="normal" > </permission>


然后在我们要限制其他程序打开的Activity中加入这样一句话:

android:permission="com.per.permissionstest1" />

这样,这个Activity就被Permission保护了起来,如果其他的Activity(A)想要打开这个Activity的话,就必须在A的Manifest中加入:

<uses-permission android:name="com.per.permissionstest1"/>

B的Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.permissionstest1"
    android:versionCode="1"
    android:versionName="1.0" />
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18"/>
<permission
     android:name="com.per.permissionstest1"
     android:protectionLevel="normal">
</permission>
<application
     android:allowBackup="true"
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/AppTheme" >
 <activity
     android:name="com.example.permissionstest1.MainActivity"
     android:permission="com.per.permissionstest1"
     android:label="@string/app_name">
 <intent-filter>
    <action android:name="android.intent.action.MAIN" >
    <category android:name="android.intent.category.LAUNCHER" >
 </intent-filter>
 </activity>
 </application>
</manifest>

A的Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.permissionstest2"
     android:versionCode="1"
     android:versionName="1.0" >
 <uses-sdk
     android:minSdkVersion="8"
    android:targetSdkVersion="18" />
     <uses-permission android:name="com.per.permissionstest1"/>
 <application
     android:allowBackup="true"
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/AppTheme" >
 <activity
     android:name="com.example.permissionstest2.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>
 </application>
</manifest>


ApiDemos中getData方法的学习 2015-04-20
纯音乐 2015-05-30

评论区