使用内容提供商进行Android开发和学习(2)

电脑杂谈  发布时间:2020-07-07 07:14:19  来源:网络整理

4. 对客户端执行CRUD检查

代码如下

记忆追寻者安卓版_安卓内容提供者_安卓psp模拟器噬神者2dlc下载

public class MainActivity extends Activity {     public static final String TAG = "MainActivity";      private void insertData(Uri providerUrl, int id, String name, String description) {         ContentValues values = new ContentValues();          values.put("id", id); // 键值对         values.put("name", name);         values.put("description", description);         getContentResolver().insert(providerUrl, values); // 必须根据ContentResolver访问内容提供者     }      private void updateData(Uri providerUrl, int id, String name, String description) {         ContentValues values = new ContentValues();         values.put("id", id);         values.put("name", name);         values.put("description", description);         getContentResolver().update(providerUrl, values, "id = " + id, null); // 第二个参数是where子句 ,null是where子句参数     }      private void deleteData(Uri providerUrl, int id) {         getContentResolver().delete(providerUrl, "id = " + id, null); // 第二个参数是where子句,null则是其参数     }      private void queryData(Uri providerUrl) {         Cursor cursor = getContentResolver().query(providerUrl, null, null, null, null); // 查询所有记录         while (cursor.moveToNext()) { // 只要游标没到底             int id = cursor.getInt(cursor.getColumnIndex("id")); // getColumnIndex()根据列名获取列的位置,而后getInt()根据列的位置获取列的值             String userName = cursor.getString(cursor.getColumnIndex("name"));             String description = cursor.getString(cursor.getColumnIndex("description"));              System.out.println(id + "--" + userName + "--" + description);         }          cursor.close(); // 莫忘记关游标         System.out.println("----------------------------------");     }      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          try {             Uri providerUrl = PersonProvider.PERSON_URI;              insertData(providerUrl, 1, "szc", "a simple boy");             insertData(providerUrl, 2, "jason", "an interesting boy");              queryData(providerUrl);              updateData(providerUrl, 2, "dustin", "a brave boy");             queryData(providerUrl);              deleteData(providerUrl, 2);             queryData(providerUrl);         } catch (Exception e) {             e.printStackTrace();         }     }  

5. 查看结果

客户端屏幕截图

服务(提供商)屏幕截图

不同的进程号表示已实现进程间通信

受级别和精力的限制,我没有研究内容提供商的源代码. 我查看了源代码和本文. 我发现客户端contentResolver的insert()方法最终调用了IContentProvider和IContentProvider的insert()方法. 该接口继承了IInterface,似乎AIDL在幕后安卓内容提供者,我没有专门研究


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-271454-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...